KEYCLOAK-5982 Fix NPEs when client 'account' was renamed/removed
This commit is contained in:
1 parent
e29ccebc21
commit
5a66f577eb
7 files changed
+124
-4
No files matched your search
+2
-1
@@ -21,6 +21,7 @@ import org.keycloak.authentication.AuthenticationProcessor;
|
||||
import org.keycloak.common.ClientConnection;
|
||||
import org.keycloak.events.EventBuilder;
|
||||
import org.keycloak.models.*;
|
||||
import org.keycloak.models.utils.SystemClientUtil;
|
||||
import org.keycloak.protocol.oidc.OIDCLoginProtocol;
|
||||
import org.keycloak.representations.JsonWebToken;
|
||||
import org.keycloak.services.Urls;
|
||||
@@ -110,7 +111,7 @@ public class ActionTokenContext<T extends JsonWebToken> {
|
||||
AuthenticationSessionModel authSession;
|
||||
|
||||
// set up the account service as the endpoint to call.
|
||||
ClientModel client = realm.getClientByClientId(clientId == null ? Constants.ACCOUNT_MANAGEMENT_CLIENT_ID : clientId);
|
||||
ClientModel client = clientId != null ? realm.getClientByClientId(clientId) : SystemClientUtil.getSystemClient(realm);
|
||||
|
||||
RootAuthenticationSessionModel rootAuthSession = new AuthenticationSessionManager(session).createAuthenticationSession(realm, true);
|
||||
authSession = rootAuthSession.createAuthenticationSession(client);
|
||||
|
||||
@@ -42,6 +42,7 @@ import org.keycloak.jose.jws.JWSBuilder;
|
||||
import org.keycloak.models.*;
|
||||
import org.keycloak.models.utils.KeycloakModelUtils;
|
||||
import org.keycloak.models.utils.SessionTimeoutHelper;
|
||||
import org.keycloak.models.utils.SystemClientUtil;
|
||||
import org.keycloak.protocol.LoginProtocol;
|
||||
import org.keycloak.protocol.LoginProtocol.Error;
|
||||
import org.keycloak.protocol.oidc.TokenManager;
|
||||
@@ -218,7 +219,7 @@ public class AuthenticationManager {
|
||||
|
||||
private static AuthenticationSessionModel createOrJoinLogoutSession(KeycloakSession session, RealmModel realm, final AuthenticationSessionManager asm, UserSessionModel userSession, boolean browserCookie) {
|
||||
// Account management client is used as a placeholder
|
||||
ClientModel client = realm.getClientByClientId(Constants.ACCOUNT_MANAGEMENT_CLIENT_ID);
|
||||
ClientModel client = SystemClientUtil.getSystemClient(realm);
|
||||
|
||||
// Try to lookup current authSessionId from browser cookie. If doesn't exists, use the same as current userSession
|
||||
String authSessionId = null;
|
||||
|
||||
@@ -54,6 +54,7 @@ import org.keycloak.models.RoleModel;
|
||||
import org.keycloak.models.UserConsentModel;
|
||||
import org.keycloak.models.UserModel;
|
||||
import org.keycloak.models.utils.FormMessage;
|
||||
import org.keycloak.models.utils.SystemClientUtil;
|
||||
import org.keycloak.protocol.AuthorizationEndpointBase;
|
||||
import org.keycloak.protocol.LoginProtocol;
|
||||
import org.keycloak.protocol.LoginProtocol.Error;
|
||||
@@ -364,7 +365,7 @@ public class LoginActionsService {
|
||||
AuthenticationSessionModel authSession;
|
||||
|
||||
// set up the account service as the endpoint to call.
|
||||
ClientModel client = realm.getClientByClientId(Constants.ACCOUNT_MANAGEMENT_CLIENT_ID);
|
||||
ClientModel client = SystemClientUtil.getSystemClient(realm);
|
||||
|
||||
RootAuthenticationSessionModel rootAuthSession = new AuthenticationSessionManager(session).createAuthenticationSession(realm, true);
|
||||
authSession = rootAuthSession.createAuthenticationSession(client);
|
||||
|
||||
Reference in new issue
Block a user