Commit Graph

278 Commits

Author SHA1 Message Date
Benjamin Dauvergne 4320f4fa78 utils: fix flatten_datetime, isoformat() already add a timezone if needed 2016-02-26 18:09:27 +01:00
Benjamin Dauvergne 75382c9ab1 pep8ness 2016-02-26 18:09:27 +01:00
Benjamin Dauvergne bd216c7ab7 store cached metadata in settings 2016-02-26 18:09:27 +01:00
Benjamin Dauvergne 4f77ee0e24 do not pass strings contening null characters to Lasso, return 400 or ignore (fixes #8939) 2016-02-26 18:09:17 +01:00
Benjamin Dauvergne f2cf86f7a6 add tox.ini to test on django 1.7, 1.8, 1.9 and with sqlite and pg 2016-02-26 18:09:11 +01:00
Benjamin Dauvergne 3ca64e7eaf report lasso error at debug level 2016-02-12 19:44:24 +01:00
Benjamin Dauvergne a597839d14 log errors when loading IdP metadata instead of throwing a traceback (fixes #9745) 2016-02-12 19:44:19 +01:00
Benjamin Dauvergne fc7fd250cd pep8ness 2016-02-12 19:44:19 +01:00
Benjamin Dauvergne e641c6ec96 fix concurrency error when creating new users (fixes #9965)
UserSAMLIdentifier is retrieved using get_or_create() first, and if is new
we proceed with the creation of the new user, otherwise we delete the temporaru
user we created use the one attached to the existing UserSAMLIdentifier.
2016-02-12 19:44:19 +01:00
Benjamin Dauvergne 359a2f4be0 reset is_staff when superuser mapping fails (fixes #9736) 2016-01-21 20:02:34 +01:00
Benjamin Dauvergne 2289b8350e implement session_not_on_or_after using new session engines (fixes #9640) 2016-01-15 12:29:31 +01:00
Benjamin Dauvergne 9143056569 use dateutil to parse datetime strings (#9640) 2016-01-15 12:26:58 +01:00
Benjamin Dauvergne f45bb8b2d0 utils: return naive datetime if USE_TZ=False (fixes #9521) 2016-01-06 09:54:52 +01:00
Benjamin Dauvergne 9b7da116ea setup.py: hide DJANGO_SETTINGS_MODULE value when calling compilemessages 2015-12-17 11:06:42 +01:00
Benjamin Dauvergne dc1e4e56ea do not flatten attributes inplace, and convert expiry to seconds (fixes #9359)
Original datetime must be kept for setting the expiry, but expiry using datetime
is not supported when using JSON sessions, so we convert it to seconds expiry
before setting it.

We also make iso8601 parsed datetime timezone aware, to match with other
datetimes in Django.
2015-12-16 18:06:07 +01:00
Benjamin Dauvergne e18dd7c7e5 adapters: prevent collision in provision_groups() (fixes #9327)
Assiging related m2m fields provokes a bulk insert which is not safe with
respect to concurrent writes, we replace this by use of get_or_create() and
delete() on the through model of the User.groups field.
2015-12-15 10:52:10 +01:00
Benjamin Dauvergne 78762accf7 middleware: handle process_view (#9131)
In process_request request.resolver_match is not yet defined.
2015-11-27 12:00:24 +01:00
Benjamin Dauvergne 8da5807298 middleware: do not apply autologin to mellon views (fixes #9131) 2015-11-27 10:29:21 +01:00
Benjamin Dauvergne ad2a575a35 middleware: disallow passive authentication when no IdP is found (fixes #8123) 2015-09-25 16:12:30 +02:00
Benjamin Dauvergne 7f70dbcb9f Revert "views: add an iframe mode to the login view"
This reverts commit 0e57f99312.
2015-09-25 15:38:13 +02:00
Benjamin Dauvergne 9667aa5f18 add PassiveAuthenticationMiddleware using a common domain cookie (fixes #8123)
Name of the cookie must be put in MELLON_OPENED_SESSION_COOKIE_NAME and
common domain can be defined in MELLON_OPENED_SESSION_COOKIE_DOMAIN, if
unset the common domain is guessed by removing the first part of the
domain name (www.xxx.com -> xxx.com).
2015-09-25 15:03:49 +02:00
Benjamin Dauvergne 0e57f99312 views: add an iframe mode to the login view
Use it by putting a tag:

  <iframe height="0" width="0" src="{% url "mellon_login" %}?{{ request.GET.urlencode }}&passive&iframe"></iframe>

in your page. It will do a passive authentication inside the iframe and
will use JS to reload the top frame if authentication is successfull.
2015-08-27 14:37:44 +02:00
Benjamin Dauvergne b1b0494ccc adapters: truncate attributes assigned to user fields (fixes #7907) 2015-07-22 16:22:59 +02:00
Benjamin Dauvergne 7ff1969bf5 views: add missing exception for case of status is not success (fixes #7878) 2015-07-21 14:06:54 +02:00
Serghei Mihai c3481b570c use requests to retreive metadata (#7785) 2015-07-06 12:01:58 +02:00
Benjamin Dauvergne 06f3380eb4 Use the lasso thin-sessions feature 2015-06-25 11:26:50 +02:00
Benjamin Dauvergne 00b7fe396c Send log message about logout before effective logout so that request.user is not Anonymous 2015-06-25 11:26:37 +02:00
Benjamin Dauvergne 1719127cae Do not store a name_id_name_qualifier or name_id_sp_name_qualifier if there is not (fixes #7680) 2015-06-25 11:25:57 +02:00
Benjamin Dauvergne d064fad15b Add debug log of rebuilt session dumps in create_logout() (#7680) 2015-06-25 11:25:17 +02:00
Frédéric Péters 8438b53a3f doc: fix typo 2015-06-17 11:16:23 +02:00
Frédéric Péters 9e5bb02b3f handle artifact response as a byte string (#7544) 2015-06-11 16:37:59 +02:00
Benjamin Dauvergne 9d8528968c views: add a VERIFY_SSL_CERTIFICATE setting
It controls the validation of certificates by requests on artifact
resolve requests. It's a global and by idp setting.

Also improve logs in errors paths around when calling the artifact
resolver.

fixes #7521
2015-06-10 15:07:59 +02:00
Benjamin Dauvergne e1284efa6c update changelog 2015-06-05 21:47:37 +02:00
Benjamin Dauvergne da384ec770 Add migrations for south 2015-06-05 21:46:36 +02:00
Benjamin Dauvergne 44ad739558 update changelog 2015-06-04 15:31:28 +02:00
Benjamin Dauvergne 2b6ce04423 authentication_failed.html: show the StatusMessage to the user if there is one 2015-06-01 02:44:21 +02:00
Benjamin Dauvergne 56336823aa MANIFEST.in: include Changelog, COPYING, testsettings.py and tests/*.py 2015-05-29 11:53:41 +02:00
Benjamin Dauvergne 6539045ff9 add a Changelog 2015-05-29 11:53:41 +02:00
Benjamin Dauvergne d5b8ec81a9 app_settings,views: make the default assertion consumer binding customizable, and restore POST as the default
And restore default to POST.

fixes #7406
2015-05-29 11:53:30 +02:00
Benjamin Dauvergne c9b4663033 setup.py,MANIFEST.in: include the VERSION file in distribution 2015-05-29 11:52:01 +02:00
Jérôme Schneider 1bf26c3bc3 setup.py: requests is an install_requires not a setup_requires 2015-05-19 17:01:51 +02:00
Benjamin Dauvergne a64d4e9da4 templates: make HTTP-Artifact the default binding for SSO
fixes #7625
2015-05-19 08:23:37 +02:00
Frédéric Péters 8dc0fd969a add support for artifact GET protocol binding (#7267) 2015-05-18 18:09:15 +02:00
Benjamin Dauvergne 6b4cabdc27 adapters: fix DefaultAdapter.get_idp(), idp['ENTITY_ID'] is a string not a list
This method was incorrectly using the `in' operator instead of the == operator.

fixes #7270
2015-05-18 16:35:48 +02:00
Benjamin Dauvergne 59e93e270f Revert "templates: make HTTP-Artifact the default binding for SSO"
This reverts commit 5e297925c6.
2015-05-18 16:35:48 +02:00
Benjamin Dauvergne 4b71bbca3a views: in sso_failure() the call to self.get_id() could never work, replace by utils.get_idp()
In SSO response treatment we do not know anymore the requested IdP from the query string
we must look in the LassoLogin object.

fixes #7271
2015-05-18 16:16:27 +02:00
Benjamin Dauvergne 12214b8cb5 utils: add a default return value to utils.get_idp()
refs #7271
2015-05-18 16:16:22 +02:00
Benjamin Dauvergne 5e297925c6 templates: make HTTP-Artifact the default binding for SSO
fixes #7625
2015-05-18 11:01:40 +02:00
Benjamin Dauvergne 6dab31ace8 views: fix setting of isPassive and forceAuthn (fixes #7100) 2015-05-18 11:01:40 +02:00
Frédéric Péters 8687da892c debian: require python 2.7 (required by django 1.8) 2015-05-07 12:40:35 +02:00