- Jan 15, 2021
-
-
Richard van der Hoff authored
This is the final step for supporting multiple OIDC providers concurrently. First of all, we reorganise the config so that you can specify a list of OIDC providers, instead of a single one. Before: oidc_config: enabled: true issuer: "https://oidc_provider" # etc After: oidc_providers: - idp_id: prov1 issuer: "https://oidc_provider" - idp_id: prov2 issuer: "https://another_oidc_provider" The old format is still grandfathered in. With that done, it's then simply a matter of having OidcHandler instantiate a new OidcProvider for each configured provider.
-
Richard van der Hoff authored
* make the OIDC bits of the test work at a higher level - via the REST api instead of poking the OIDCHandler directly. * Move it to test_login.py, where I think it fits better.
-
Richard van der Hoff authored
Again in preparation for handling more than one OIDC provider, add a new caveat to the macaroon used as an OIDC session cookie, which remembers which OIDC provider we are talking to. In future, when we get a callback, we'll need it to make sure we talk to the right IdP. As part of this, I'm adding an idp_id and idp_name field to the OIDC configuration object. They aren't yet documented, and we'll just use the old values by default.
-
- Jan 14, 2021
-
-
Richard van der Hoff authored
The idea here is that we will have an instance of OidcProvider for each configured IdP, with OidcHandler just doing the marshalling of them. For now it's still hardcoded with a single provider.
-
- Jan 13, 2021
-
-
Richard van der Hoff authored
Some light refactoring of OidcHandler, in preparation for bigger things: * remove inheritance from deprecated BaseHandler * add an object to hold the things that go into a session cookie * factor out a separate class for manipulating said cookies
-
- Jan 12, 2021
-
-
Dirk Klimpel authored
This only applies if the user's data is to be erased.
-
Richard van der Hoff authored
SynapseRequest is in danger of becoming a bit of a dumping-ground for "useful stuff relating to Requests", which isn't really its intention (its purpose is to override render, finished and connectionLost to set up the LoggingContext and write the right entries to the request log). Putting utility functions inside SynapseRequest means that lots of our code ends up requiring a SynapseRequest when there is nothing synapse-specific about the Request at all, and any old twisted.web.iweb.IRequest will do. This increases code coupling and makes testing more difficult. In short: move get_user_agent out to a utility function.
-
- Jan 07, 2021
-
-
Richard van der Hoff authored
If we are lacking an optional dependency, skip the tests that rely on it.
-
- Jan 03, 2021
-
-
Patrick Cloke authored
-
- Dec 18, 2020
-
-
Richard van der Hoff authored
The final part (for now) of my work to implement a username picker in synapse itself. The idea is that we allow `UsernameMappingProvider`s to return `localpart=None`, in which case, rather than redirecting the browser back to the client, we redirect to a username-picker resource, which allows the user to enter a username. We *then* complete the SSO flow (including doing the client permission checks). The static resources for the username picker itself (in https://github.com/matrix-org/synapse/tree/rav/username_picker/synapse/res/username_picker) are essentially lifted wholesale from https://github.com/matrix-org/matrix-synapse-saml-mozilla/tree/master/matrix_synapse_saml_mozilla/res. As the comment says, we might want to think about making them customisable, but that can be a follow-up. Fixes #8876.
-
- Dec 17, 2020
-
-
Dirk Klimpel authored
Fixes a bug that deactivated users appear in the directory when their profile information was updated. To change profile information of deactivated users is neccesary for example you will remove displayname or avatar. But they should not appear in directory. They are deactivated. Co-authored-by:
Erik Johnston <erikj@jki.re>
-
- Dec 16, 2020
-
-
Richard van der Hoff authored
This is another part of my work towards fixing #8876. It moves some of the logic currently in the SAML and OIDC handlers - in particular the call to `AuthHandler.complete_sso_login` down into the `SsoHandler`.
-
- Dec 15, 2020
-
-
Richard van der Hoff authored
... so that we can test its behaviour when it raises. Also pull it out to the top level so that I can use it from other test classes.
-
Richard van der Hoff authored
The tests that need this all do it already.
-
Richard van der Hoff authored
despite the warnings saying "don't implement get_extra_attributes", we had implemented it, so the tests weren't doing what we thought they were.
-
Richard van der Hoff authored
This was never used, so let's get rid of it.
-
Richard van der Hoff authored
* move simple_async_mock to test_utils ... so that it can be re-used * Remove references to `SamlHandler._map_saml_response_to_user` from tests This method is going away, so we can no longer use it as a test point. Instead, factor out a higher-level method which takes a SAML object, and verify correct behaviour by mocking out `AuthHandler.complete_sso_login`. * changelog
-
- Dec 14, 2020
-
-
Richard van der Hoff authored
-
Patrick Cloke authored
-
Richard van der Hoff authored
* Remove references to handler._auth_handler (and replace them with hs.get_auth_handler) * Factor out a utility function for building Requests * Remove mocks of `OidcHandler._map_userinfo_to_user` This method is going away, so mocking it out is no longer a valid approach. Instead, we mock out lower-level methods (eg _remote_id_from_userinfo), or simply allow the regular implementation to proceed and update the expectations accordingly. * Remove references to `OidcHandler._map_userinfo_to_user` from tests This method is going away, so we can no longer use it as a test point. Instead we build mock "callback" requests which we pass into `handle_oidc_callback`, and verify correct behaviour by mocking out `AuthHandler.complete_sso_login`.
-
- Dec 11, 2020
-
-
David Teller authored
Spam checker modules can now provide async methods. This is implemented in a backwards-compatible manner.
-
- Dec 09, 2020
-
-
Patrick Cloke authored
-
Richard van der Hoff authored
* Consistently use room_id from federation request body Some federation APIs have a redundant `room_id` path param (see https://github.com/matrix-org/matrix-doc/issues/2330). We should make sure we consistently use either the path param or the body param, and the body param is easier. * Kill off some references to "context" Once upon a time, "rooms" were known as "contexts". I think this kills of the last references to "contexts".
-
- Dec 04, 2020
-
-
Patrick Cloke authored
This was broken in #8801.
-
- Dec 02, 2020
-
-
Richard van der Hoff authored
This is now only used in `test_typing`, so move it there.
-
Richard van der Hoff authored
-
Richard van der Hoff authored
-
Richard van der Hoff authored
A few test cases were relying on being able to mount non-client servlets on the test resource. it's better to give them their own Resources.
-
Patrick Cloke authored
Replaces the `federation_ip_range_blacklist` configuration setting with an `ip_range_blacklist` setting with wider scope. It now applies to: * Federation * Identity servers * Push notifications * Checking key validitity for third-party invite events The old `federation_ip_range_blacklist` setting is still honored if present, but with reduced scope (it only applies to federation and identity servers).
-
Patrick Cloke authored
This was broken in #8801 when abstracting code shared with OIDC. After this change both SAML and OIDC have a concept of grandfathering users, but with different implementations.
-
Patrick Cloke authored
-
Richard van der Hoff authored
The idea here is to abstract out all the conditional code which tests which methods a given password provider has, to provide a consistent interface.
-
- Dec 01, 2020
-
-
Richard van der Hoff authored
The spec requires synapse to support `identifier` dicts for `m.login.password` user-interactive auth, which it did not (instead, it required an undocumented `user` parameter.) To fix this properly, we need to pull the code that interprets `identifier` into `AuthHandler.validate_login` so that it can be called from the UIA code. Fixes #5665.
-
Richard van der Hoff authored
Fix a minor bug where we would offer "m.login.password" login if a custom auth provider supported it, even if password login was disabled.
-
Richard van der Hoff authored
These things seemed to be completely untested, so I added a load of tests for them.
-
- Nov 30, 2020
-
-
Jonathan de Jong authored
Changes `@cache_in_self` to use underscore-prefixed attributes.
-
- Nov 25, 2020
-
-
Patrick Cloke authored
Abstracts the SAML and OpenID Connect code which attempts to regenerate the localpart of a matrix ID if it is already in use.
-
- Nov 19, 2020
-
-
Patrick Cloke authored
Checks that the localpart returned by mapping providers for SAML and OIDC are valid before registering new users. Extends the OIDC tests for existing users and invalid data.
-
Richard van der Hoff authored
* Consistently use room_id from federation request body Some federation APIs have a redundant `room_id` path param (see https://github.com/matrix-org/matrix-doc/issues/2330). We should make sure we consistently use either the path param or the body param, and the body param is easier. * Kill off some references to "context" Once upon a time, "rooms" were known as "contexts". I think this kills of the last references to "contexts".
-
- Nov 17, 2020
-
-
Patrick Cloke authored
De-duplicates code between the SAML and OIDC implementations.
-