From dacb1ebd50cc33dbdc6c2fbf756176cd18c3a1ac Mon Sep 17 00:00:00 2001 From: Stian Thorgersen Date: Wed, 20 Jan 2016 10:23:13 +0100 Subject: [PATCH] KEYCLOAK-2346 Add identity provider and external username to event when login via broker --- .../keycloak/services/managers/AuthenticationManager.java | 4 ++-- .../keycloak/services/resources/IdentityBrokerService.java | 4 ++-- .../org/keycloak/services/resources/LoginActionsService.java | 5 ++++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java b/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java index d034d753e8..3cb6eca408 100755 --- a/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java +++ b/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java @@ -135,7 +135,7 @@ public class AuthenticationManager { backchannelLogoutClientSession(session, realm, clientSession, userSession, uriInfo, headers); } if (logoutBroker) { - String brokerId = userSession.getNote(IdentityBrokerService.BROKER_PROVIDER_ID); + String brokerId = userSession.getNote(Details.IDENTITY_PROVIDER); if (brokerId != null) { IdentityProvider identityProvider = IdentityBrokerService.getIdentityProvider(session, realm, brokerId); try { @@ -234,7 +234,7 @@ public class AuthenticationManager { } } - String brokerId = userSession.getNote(IdentityBrokerService.BROKER_PROVIDER_ID); + String brokerId = userSession.getNote(Details.IDENTITY_PROVIDER); if (brokerId != null) { IdentityProvider identityProvider = IdentityBrokerService.getIdentityProvider(session, realm, brokerId); Response response = identityProvider.keycloakInitiatedBrowserLogout(userSession, uriInfo, realm); diff --git a/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java b/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java index eb3f8167a2..b58498ebe9 100755 --- a/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java +++ b/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java @@ -95,7 +95,6 @@ import static org.keycloak.models.Constants.ACCOUNT_MANAGEMENT_CLIENT_ID; public class IdentityBrokerService implements IdentityProvider.AuthenticationCallback { private static final Logger LOGGER = Logger.getLogger(IdentityBrokerService.class); - public static final String BROKER_PROVIDER_ID = "BROKER_PROVIDER_ID"; private final RealmModel realmModel; @@ -517,7 +516,8 @@ public class IdentityBrokerService implements IdentityProvider.AuthenticationCal TokenManager.attachClientSession(userSession, clientSession); context.getIdp().attachUserSession(userSession, clientSession, context); - userSession.setNote(BROKER_PROVIDER_ID, providerId); + userSession.setNote(Details.IDENTITY_PROVIDER, providerId); + userSession.setNote(Details.IDENTITY_PROVIDER_USERNAME, context.getUsername()); if (isDebugEnabled()) { LOGGER.debugf("Performing local authentication for user [%s].", federatedUser); diff --git a/services/src/main/java/org/keycloak/services/resources/LoginActionsService.java b/services/src/main/java/org/keycloak/services/resources/LoginActionsService.java index 75dd87ee8b..cb92cdb063 100755 --- a/services/src/main/java/org/keycloak/services/resources/LoginActionsService.java +++ b/services/src/main/java/org/keycloak/services/resources/LoginActionsService.java @@ -780,7 +780,10 @@ public class LoginActionsService { .detail(Details.AUTH_METHOD, userSession.getAuthMethod()) .detail(Details.USERNAME, userSession.getLoginUsername()) .detail(Details.RESPONSE_TYPE, responseType) - .detail(Details.RESPONSE_MODE, responseMode.toString().toLowerCase()); + .detail(Details.RESPONSE_MODE, responseMode.toString().toLowerCase()) + .detail(Details.IDENTITY_PROVIDER, userSession.getNote(Details.IDENTITY_PROVIDER)) + .detail(Details.IDENTITY_PROVIDER_USERNAME, userSession.getNote(Details.IDENTITY_PROVIDER_USERNAME)); + if (userSession.isRememberMe()) { event.detail(Details.REMEMBER_ME, "true"); }