mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-12-10 10:38:05 -05:00
Land support for multiple OIDC providers (#9110)
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.
This commit is contained in:
parent
3e4cdfe5d9
commit
9de6b94117
7 changed files with 447 additions and 373 deletions
|
|
@ -145,7 +145,7 @@ class OidcHandlerTestCase(HomeserverTestCase):
|
|||
hs = self.setup_test_homeserver(proxied_http_client=self.http_client)
|
||||
|
||||
self.handler = hs.get_oidc_handler()
|
||||
self.provider = self.handler._provider
|
||||
self.provider = self.handler._providers["oidc"]
|
||||
sso_handler = hs.get_sso_handler()
|
||||
# Mock the render error method.
|
||||
self.render_error = Mock(return_value=None)
|
||||
|
|
@ -866,7 +866,7 @@ async def _make_callback_with_userinfo(
|
|||
from synapse.handlers.oidc_handler import OidcSessionData
|
||||
|
||||
handler = hs.get_oidc_handler()
|
||||
provider = handler._provider
|
||||
provider = handler._providers["oidc"]
|
||||
provider._exchange_code = simple_async_mock(return_value={})
|
||||
provider._parse_id_token = simple_async_mock(return_value=userinfo)
|
||||
provider._fetch_userinfo = simple_async_mock(return_value=userinfo)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue