KEYCLOAK-3822 Changing signature validation settings of an external IdP is not sometimes reflected
This commit is contained in:
1 parent
cb4f856ab6
commit
69ce1e05f0
13 files changed
+491
-70
No files matched your search
@@ -22,6 +22,7 @@ import java.security.PublicKey;
|
||||
import org.keycloak.broker.oidc.OIDCIdentityProviderConfig;
|
||||
import org.keycloak.jose.jws.JWSInput;
|
||||
import org.keycloak.keys.PublicKeyStorageProvider;
|
||||
import org.keycloak.keys.PublicKeyStorageUtils;
|
||||
import org.keycloak.models.ClientModel;
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
import org.keycloak.models.RealmModel;
|
||||
@@ -36,27 +37,20 @@ public class PublicKeyStorageManager {
|
||||
|
||||
PublicKeyStorageProvider keyStorage = session.getProvider(PublicKeyStorageProvider.class);
|
||||
|
||||
String modelKey = getModelKey(client);
|
||||
String modelKey = PublicKeyStorageUtils.getClientModelCacheKey(client.getRealm().getId(), client.getId());
|
||||
ClientPublicKeyLoader loader = new ClientPublicKeyLoader(session, client);
|
||||
return keyStorage.getPublicKey(modelKey, kid, loader);
|
||||
}
|
||||
|
||||
private static String getModelKey(ClientModel client) {
|
||||
return client.getRealm().getId() + "::client::" + client.getId();
|
||||
}
|
||||
|
||||
|
||||
public static PublicKey getIdentityProviderPublicKey(KeycloakSession session, RealmModel realm, OIDCIdentityProviderConfig idpConfig, JWSInput input) {
|
||||
String kid = input.getHeader().getKeyId();
|
||||
|
||||
PublicKeyStorageProvider keyStorage = session.getProvider(PublicKeyStorageProvider.class);
|
||||
|
||||
String modelKey = getModelKey(realm, idpConfig);
|
||||
String modelKey = PublicKeyStorageUtils.getIdpModelCacheKey(realm.getId(), idpConfig.getInternalId());
|
||||
OIDCIdentityProviderPublicKeyLoader loader = new OIDCIdentityProviderPublicKeyLoader(session, idpConfig);
|
||||
return keyStorage.getPublicKey(modelKey, kid, loader);
|
||||
}
|
||||
|
||||
private static String getModelKey(RealmModel realm, OIDCIdentityProviderConfig idpConfig) {
|
||||
return realm.getId() + "::idp::" + idpConfig.getInternalId();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user