diff --git a/synapse/rest/client/v1/login.py b/synapse/rest/client/v1/login.py
index b7c5b58b01..e9d3032498 100644
--- a/synapse/rest/client/v1/login.py
+++ b/synapse/rest/client/v1/login.py
@@ -451,6 +451,7 @@ class SSOAuthHandler(object):
@defer.inlineCallbacks
def on_successful_auth(
self, username, request, client_redirect_url,
+ user_display_name=None,
):
"""Called once the user has successfully authenticated with the SSO.
@@ -467,6 +468,9 @@ class SSOAuthHandler(object):
client_redirect_url (unicode): the redirect_url the client gave us when
it first started the process.
+ user_display_name (unicode|None): if set, and we have to register a new user,
+ we will set their displayname to this.
+
Returns:
Deferred[none]: Completes once we have handled the request.
"""
@@ -478,6 +482,7 @@ class SSOAuthHandler(object):
yield self._registration_handler.register(
localpart=localpart,
generate_token=False,
+ default_display_name=user_display_name,
)
)
diff --git a/synapse/rest/saml2/response_resource.py b/synapse/rest/saml2/response_resource.py
index ad2ed157b5..69fb77b322 100644
--- a/synapse/rest/saml2/response_resource.py
+++ b/synapse/rest/saml2/response_resource.py
@@ -66,6 +66,9 @@ class SAML2ResponseResource(Resource):
raise CodeMessageException(400, "uid not in SAML2 response")
username = saml2_auth.ava["uid"][0]
+
+ displayName = saml2_auth.ava.get("displayName", [None])[0]
return self._sso_auth_handler.on_successful_auth(
username, request, relay_state,
+ user_display_name=displayName,
)
|