diff --git a/pom.xml b/pom.xml
index fabe70b..a091e2c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,7 @@
UTF-8
UTF-8
- 26.1.5
+ 26.2.5
4.8.3.1
3.4.1
diff --git a/src/main/java/nl/first8/keycloak/services/resources/IdentityBrokerService.java b/src/main/java/nl/first8/keycloak/services/resources/IdentityBrokerService.java
index 21998ab..cb63848 100644
--- a/src/main/java/nl/first8/keycloak/services/resources/IdentityBrokerService.java
+++ b/src/main/java/nl/first8/keycloak/services/resources/IdentityBrokerService.java
@@ -279,7 +279,7 @@ public Response clientInitiatedAccountLinking(@PathParam("provider_alias") Strin
event.success();
try {
- IdentityProvider> identityProvider = getIdentityProvider(session, realmModel, providerAlias);
+ IdentityProvider> identityProvider = getIdentityProvider(session, providerAlias);
Response response = identityProvider.performLogin(createAuthenticationRequest(identityProvider, providerAlias, clientSessionCode));
if (response != null) {
@@ -330,14 +330,14 @@ public Response performLogin(@PathParam("provider_alias") String providerAlias,
ClientSessionCode clientSessionCode = new ClientSessionCode<>(session, realmModel, authSession);
clientSessionCode.setAction(AuthenticationSessionModel.Action.AUTHENTICATE.name());
- IdentityProviderModel identityProviderModel = realmModel.getIdentityProviderByAlias(providerAlias);
+ IdentityProviderModel identityProviderModel = session.identityProviders().getByAlias(providerAlias);
if (identityProviderModel == null) {
throw new IdentityBrokerException("Identity Provider [" + providerAlias + "] not found.");
}
if (identityProviderModel.isLinkOnly()) {
throw new IdentityBrokerException("Identity Provider [" + providerAlias + "] is not allowed to perform a login.");
}
- if (clientSessionCode != null && clientSessionCode.getClientSession() != null && loginHint != null) {
+ if (clientSessionCode.getClientSession() != null && loginHint != null) {
clientSessionCode.getClientSession().setClientNote(OIDCLoginProtocol.LOGIN_HINT_PARAM, loginHint);
}
@@ -388,7 +388,7 @@ public Object getEndpoint(@PathParam("provider_alias") String providerAlias) {
IdentityProvider identityProvider;
try {
- identityProvider = getIdentityProvider(session, realmModel, providerAlias);
+ identityProvider = getIdentityProvider(session, providerAlias);
} catch (IdentityBrokerException e) {
throw new NotFoundException(e.getMessage());
}
@@ -441,7 +441,7 @@ private Response getToken(String providerAlias, boolean forceRetrieval) {
}
- IdentityProvider identityProvider = getIdentityProvider(session, realmModel, providerAlias);
+ IdentityProvider> identityProvider = getIdentityProvider(session, providerAlias);
IdentityProviderModel identityProviderConfig = getIdentityProviderConfig(providerAlias);
if (identityProviderConfig.isStoreToken()) {
@@ -494,7 +494,7 @@ public Response authenticated(BrokeredIdentityContext context) {
context.getIdp().preprocessFederatedIdentity(session, realmModel, context);
KeycloakSessionFactory sessionFactory = session.getKeycloakSessionFactory();
- realmModel.getIdentityProviderMappersByAliasStream(context.getIdpConfig().getAlias()).forEach(mapper -> {
+ session.identityProviders().getMappersByAliasStream(context.getIdpConfig().getAlias()).forEach(mapper -> {
IdentityProviderMapper target = (IdentityProviderMapper) sessionFactory
.getProviderFactory(IdentityProviderMapper.class, mapper.getIdentityProviderMapper());
target.preprocessFederatedIdentity(session, realmModel, mapper, context);
@@ -506,7 +506,8 @@ public Response authenticated(BrokeredIdentityContext context) {
this.event.event(EventType.IDENTITY_PROVIDER_LOGIN)
.detail(Details.REDIRECT_URI, authenticationSession.getRedirectUri())
.detail(Details.IDENTITY_PROVIDER, providerAlias)
- .detail(Details.IDENTITY_PROVIDER_USERNAME, context.getUsername());
+ .detail(Details.IDENTITY_PROVIDER_USERNAME, context.getUsername())
+ .detail(Details.IDENTITY_PROVIDER_BROKER_SESSION_ID, context.getBrokerSessionId());
UserModel federatedUser = this.session.users().getUserByFederatedIdentity(this.realmModel, federatedIdentityModel);
boolean shouldMigrateId = false;
@@ -831,7 +832,8 @@ private Response finishBrokerAuthentication(BrokeredIdentityContext context, Use
authSession.setUserSessionNote(Details.IDENTITY_PROVIDER_USERNAME, context.getUsername());
event.detail(Details.IDENTITY_PROVIDER, providerAlias)
- .detail(Details.IDENTITY_PROVIDER_USERNAME, context.getUsername());
+ .detail(Details.IDENTITY_PROVIDER_USERNAME, context.getUsername())
+ .detail(Details.IDENTITY_PROVIDER_BROKER_SESSION_ID, context.getBrokerSessionId());
if (isDebugEnabled()) {
logger.debugf("Performing local authentication for user [%s].", federatedUser);
@@ -1263,8 +1265,8 @@ private Response notFound(String message) {
throw ErrorResponse.error(message, Response.Status.NOT_FOUND);
}
- public static IdentityProvider> getIdentityProvider(KeycloakSession session, RealmModel realm, String alias) {
- IdentityProviderModel identityProviderModel = realm.getIdentityProviderByAlias(alias);
+ public static IdentityProvider> getIdentityProvider(KeycloakSession session, String alias) {
+ IdentityProviderModel identityProviderModel = session.identityProviders().getByAlias(alias);
if (identityProviderModel != null) {
IdentityProviderFactory> providerFactory = getIdentityProviderFactory(session, identityProviderModel);
@@ -1279,7 +1281,10 @@ public static IdentityProvider> getIdentityProvider(KeycloakSession session, R
throw new IdentityBrokerException("Identity Provider [" + alias + "] not found.");
}
- public static IdentityProviderFactory> getIdentityProviderFactory(KeycloakSession session, IdentityProviderModel model) {
+ private static IdentityProviderFactory> getIdentityProviderFactory(KeycloakSession session, IdentityProviderModel model) {
+ if (model == null) {
+ return null;
+ }
return Stream.concat(session.getKeycloakSessionFactory().getProviderFactoriesStream(IdentityProvider.class),
session.getKeycloakSessionFactory().getProviderFactoriesStream(SocialIdentityProvider.class))
.filter(providerFactory -> Objects.equals(providerFactory.getId(), model.getProviderId()))
@@ -1289,7 +1294,7 @@ public static IdentityProviderFactory> getIdentityProviderFactory(KeycloakSess
}
private IdentityProviderModel getIdentityProviderConfig(String providerAlias) {
- IdentityProviderModel model = this.realmModel.getIdentityProviderByAlias(providerAlias);
+ IdentityProviderModel model = session.identityProviders().getByAlias(providerAlias);
if (model == null) {
throw new IdentityBrokerException("Configuration for identity provider [" + providerAlias + "] not found.");
}