mirror of
https://git.anonymousland.org/anonymousland/synapse-product.git
synced 2025-09-22 23:54:35 -04:00
Allow existing users to login via OpenID Connect. (#8345)
Co-authored-by: Benjamin Koch <bbbsnowball@gmail.com> This adds configuration flags that will match a user to pre-existing users when logging in via OpenID Connect. This is useful when switching to an existing SSO system.
This commit is contained in:
parent
3e87d79e1c
commit
abd04b6af0
6 changed files with 76 additions and 17 deletions
|
@ -617,3 +617,38 @@ class OidcHandlerTestCase(HomeserverTestCase):
|
|||
)
|
||||
)
|
||||
self.assertEqual(mxid, "@test_user_2:test")
|
||||
|
||||
# Test if the mxid is already taken
|
||||
store = self.hs.get_datastore()
|
||||
user3 = UserID.from_string("@test_user_3:test")
|
||||
self.get_success(
|
||||
store.register_user(user_id=user3.to_string(), password_hash=None)
|
||||
)
|
||||
userinfo = {"sub": "test3", "username": "test_user_3"}
|
||||
e = self.get_failure(
|
||||
self.handler._map_userinfo_to_user(
|
||||
userinfo, token, "user-agent", "10.10.10.10"
|
||||
),
|
||||
MappingException,
|
||||
)
|
||||
self.assertEqual(str(e.value), "mxid '@test_user_3:test' is already taken")
|
||||
|
||||
@override_config({"oidc_config": {"allow_existing_users": True}})
|
||||
def test_map_userinfo_to_existing_user(self):
|
||||
"""Existing users can log in with OpenID Connect when allow_existing_users is True."""
|
||||
store = self.hs.get_datastore()
|
||||
user4 = UserID.from_string("@test_user_4:test")
|
||||
self.get_success(
|
||||
store.register_user(user_id=user4.to_string(), password_hash=None)
|
||||
)
|
||||
userinfo = {
|
||||
"sub": "test4",
|
||||
"username": "test_user_4",
|
||||
}
|
||||
token = {}
|
||||
mxid = self.get_success(
|
||||
self.handler._map_userinfo_to_user(
|
||||
userinfo, token, "user-agent", "10.10.10.10"
|
||||
)
|
||||
)
|
||||
self.assertEqual(mxid, "@test_user_4:test")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue