Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<keycloak.version>26.1.5</keycloak.version>
<keycloak.version>26.2.5</keycloak.version>
<spotbugs.version>4.8.3.1</spotbugs.version>

<jib-maven-plugin.version>3.4.1</jib-maven-plugin.version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -330,14 +330,14 @@ public Response performLogin(@PathParam("provider_alias") String providerAlias,

ClientSessionCode<AuthenticationSessionModel> 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);
}

Expand Down Expand Up @@ -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());
}
Expand Down Expand Up @@ -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()) {
Expand Down Expand Up @@ -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);
Expand All @@ -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;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand All @@ -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()))
Expand All @@ -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.");
}
Expand Down