Rename IDPSpi to IdentityProviderStorageSpi
Closes #31639 Signed-off-by: Stefan Guilhen <sguilhen@redhat.com>
This commit is contained in:
parent
98dc21e6fc
commit
88cca10472
18 changed files with 79 additions and 77 deletions
|
@ -19,8 +19,8 @@ package org.keycloak.models.cache.infinispan.idp;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
import org.keycloak.common.Profile;
|
import org.keycloak.common.Profile;
|
||||||
import org.keycloak.models.IDPProvider;
|
|
||||||
import org.keycloak.models.IdentityProviderMapperModel;
|
import org.keycloak.models.IdentityProviderMapperModel;
|
||||||
|
import org.keycloak.models.IdentityProviderStorageProvider;
|
||||||
import org.keycloak.models.IdentityProviderModel;
|
import org.keycloak.models.IdentityProviderModel;
|
||||||
import org.keycloak.models.KeycloakSession;
|
import org.keycloak.models.KeycloakSession;
|
||||||
import org.keycloak.models.ModelException;
|
import org.keycloak.models.ModelException;
|
||||||
|
@ -31,18 +31,18 @@ import org.keycloak.models.cache.infinispan.CachedCount;
|
||||||
import org.keycloak.models.cache.infinispan.RealmCacheSession;
|
import org.keycloak.models.cache.infinispan.RealmCacheSession;
|
||||||
import org.keycloak.organization.OrganizationProvider;
|
import org.keycloak.organization.OrganizationProvider;
|
||||||
|
|
||||||
public class InfinispanIDPProvider implements IDPProvider {
|
public class InfinispanIdentityProviderStorageProvider implements IdentityProviderStorageProvider {
|
||||||
|
|
||||||
private static final String IDP_COUNT_KEY_SUFFIX = ".idp.count";
|
private static final String IDP_COUNT_KEY_SUFFIX = ".idp.count";
|
||||||
private static final String IDP_ALIAS_KEY_SUFFIX = ".idp.alias";
|
private static final String IDP_ALIAS_KEY_SUFFIX = ".idp.alias";
|
||||||
|
|
||||||
private final KeycloakSession session;
|
private final KeycloakSession session;
|
||||||
private final IDPProvider idpDelegate;
|
private final IdentityProviderStorageProvider idpDelegate;
|
||||||
private final RealmCacheSession realmCache;
|
private final RealmCacheSession realmCache;
|
||||||
|
|
||||||
public InfinispanIDPProvider(KeycloakSession session) {
|
public InfinispanIdentityProviderStorageProvider(KeycloakSession session) {
|
||||||
this.session = session;
|
this.session = session;
|
||||||
this.idpDelegate = session.getProvider(IDPProvider.class, "jpa");
|
this.idpDelegate = session.getProvider(IdentityProviderStorageProvider.class, "jpa");
|
||||||
this.realmCache = (RealmCacheSession) session.getProvider(CacheRealmProvider.class);
|
this.realmCache = (RealmCacheSession) session.getProvider(CacheRealmProvider.class);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,18 +17,18 @@
|
||||||
package org.keycloak.models.cache.infinispan.idp;
|
package org.keycloak.models.cache.infinispan.idp;
|
||||||
|
|
||||||
import org.keycloak.Config;
|
import org.keycloak.Config;
|
||||||
import org.keycloak.models.IDPProvider;
|
import org.keycloak.models.IdentityProviderStorageProvider;
|
||||||
import org.keycloak.models.IDPProviderFactory;
|
import org.keycloak.models.IdentityProviderStorageProviderFactory;
|
||||||
import org.keycloak.models.KeycloakSession;
|
import org.keycloak.models.KeycloakSession;
|
||||||
import org.keycloak.models.KeycloakSessionFactory;
|
import org.keycloak.models.KeycloakSessionFactory;
|
||||||
|
|
||||||
public class InfinispanIDPProviderFactory implements IDPProviderFactory<IDPProvider>{
|
public class InfinispanIdentityProviderStorageProviderFactory implements IdentityProviderStorageProviderFactory<IdentityProviderStorageProvider> {
|
||||||
|
|
||||||
public static final String PROVIDER_ID = "infinispan";
|
public static final String PROVIDER_ID = "infinispan";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IDPProvider create(KeycloakSession session) {
|
public IdentityProviderStorageProvider create(KeycloakSession session) {
|
||||||
return new InfinispanIDPProvider(session);
|
return new InfinispanIdentityProviderStorageProvider(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
|
@ -15,4 +15,4 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
|
|
||||||
org.keycloak.models.cache.infinispan.idp.InfinispanIDPProviderFactory
|
org.keycloak.models.cache.infinispan.idp.InfinispanIdentityProviderStorageProviderFactory
|
|
@ -31,15 +31,14 @@ import jakarta.persistence.criteria.CriteriaQuery;
|
||||||
import jakarta.persistence.criteria.MapJoin;
|
import jakarta.persistence.criteria.MapJoin;
|
||||||
import jakarta.persistence.criteria.Predicate;
|
import jakarta.persistence.criteria.Predicate;
|
||||||
import jakarta.persistence.criteria.Root;
|
import jakarta.persistence.criteria.Root;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import org.hibernate.Session;
|
import org.hibernate.Session;
|
||||||
import org.jboss.logging.Logger;
|
import org.jboss.logging.Logger;
|
||||||
import org.keycloak.broker.provider.IdentityProvider;
|
import org.keycloak.broker.provider.IdentityProvider;
|
||||||
import org.keycloak.broker.provider.IdentityProviderFactory;
|
import org.keycloak.broker.provider.IdentityProviderFactory;
|
||||||
import org.keycloak.broker.social.SocialIdentityProvider;
|
import org.keycloak.broker.social.SocialIdentityProvider;
|
||||||
import org.keycloak.connections.jpa.JpaConnectionProvider;
|
import org.keycloak.connections.jpa.JpaConnectionProvider;
|
||||||
import org.keycloak.models.IDPProvider;
|
|
||||||
import org.keycloak.models.IdentityProviderMapperModel;
|
import org.keycloak.models.IdentityProviderMapperModel;
|
||||||
|
import org.keycloak.models.IdentityProviderStorageProvider;
|
||||||
import org.keycloak.models.IdentityProviderModel;
|
import org.keycloak.models.IdentityProviderModel;
|
||||||
import org.keycloak.models.KeycloakSession;
|
import org.keycloak.models.KeycloakSession;
|
||||||
import org.keycloak.models.ModelException;
|
import org.keycloak.models.ModelException;
|
||||||
|
@ -62,18 +61,18 @@ import static org.keycloak.models.jpa.PaginationUtils.paginateQuery;
|
||||||
import static org.keycloak.utils.StreamsUtil.closing;
|
import static org.keycloak.utils.StreamsUtil.closing;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A JPA based implementation of {@link IDPProvider}.
|
* A JPA based implementation of {@link IdentityProviderStorageProvider}.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:sguilhen@redhat.com">Stefan Guilhen</a>
|
* @author <a href="mailto:sguilhen@redhat.com">Stefan Guilhen</a>
|
||||||
*/
|
*/
|
||||||
public class JpaIDPProvider implements IDPProvider {
|
public class JpaIdentityProviderStorageProvider implements IdentityProviderStorageProvider {
|
||||||
|
|
||||||
protected static final Logger logger = Logger.getLogger(IDPProvider.class);
|
protected static final Logger logger = Logger.getLogger(IdentityProviderStorageProvider.class);
|
||||||
|
|
||||||
private final EntityManager em;
|
private final EntityManager em;
|
||||||
private final KeycloakSession session;
|
private final KeycloakSession session;
|
||||||
|
|
||||||
public JpaIDPProvider(KeycloakSession session) {
|
public JpaIdentityProviderStorageProvider(KeycloakSession session) {
|
||||||
this.session = session;
|
this.session = session;
|
||||||
this.em = session.getProvider(JpaConnectionProvider.class).getEntityManager();
|
this.em = session.getProvider(JpaConnectionProvider.class).getEntityManager();
|
||||||
}
|
}
|
||||||
|
@ -166,8 +165,7 @@ public class JpaIDPProvider implements IDPProvider {
|
||||||
// flush so that constraint violations are flagged and converted into model exception now rather than at the end of the tx.
|
// flush so that constraint violations are flagged and converted into model exception now rather than at the end of the tx.
|
||||||
em.flush();
|
em.flush();
|
||||||
|
|
||||||
session.identityProviders().getMappersByAliasStream(alias).collect(Collectors.toList())
|
session.identityProviders().getMappersByAliasStream(alias).forEach(session.identityProviders()::removeMapper);
|
||||||
.forEach(session.identityProviders()::removeMapper);
|
|
||||||
|
|
||||||
// send identity provider removed event.
|
// send identity provider removed event.
|
||||||
RealmModel realm = this.getRealm();
|
RealmModel realm = this.getRealm();
|
|
@ -17,22 +17,22 @@
|
||||||
package org.keycloak.models.jpa;
|
package org.keycloak.models.jpa;
|
||||||
|
|
||||||
import org.keycloak.Config;
|
import org.keycloak.Config;
|
||||||
import org.keycloak.models.IDPProviderFactory;
|
import org.keycloak.models.IdentityProviderStorageProviderFactory;
|
||||||
import org.keycloak.models.KeycloakSession;
|
import org.keycloak.models.KeycloakSession;
|
||||||
import org.keycloak.models.KeycloakSessionFactory;
|
import org.keycloak.models.KeycloakSessionFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A JPA based implementation of {@link IDPProviderFactory}.
|
* A JPA based implementation of {@link IdentityProviderStorageProviderFactory}.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:sguilhen@redhat.com">Stefan Guilhen</a>
|
* @author <a href="mailto:sguilhen@redhat.com">Stefan Guilhen</a>
|
||||||
*/
|
*/
|
||||||
public class JpaIDPProviderFactory implements IDPProviderFactory<JpaIDPProvider> {
|
public class JpaIdentityProviderStorageProviderFactory implements IdentityProviderStorageProviderFactory<JpaIdentityProviderStorageProvider> {
|
||||||
|
|
||||||
public static final String ID = "jpa";
|
public static final String ID = "jpa";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JpaIDPProvider create(KeycloakSession session) {
|
public JpaIdentityProviderStorageProvider create(KeycloakSession session) {
|
||||||
return new JpaIDPProvider(session);
|
return new JpaIdentityProviderStorageProvider(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
|
@ -15,4 +15,4 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
|
|
||||||
org.keycloak.models.jpa.JpaIDPProviderFactory
|
org.keycloak.models.jpa.JpaIdentityProviderStorageProviderFactory
|
|
@ -20,7 +20,7 @@ package org.keycloak.storage.datastore;
|
||||||
import org.keycloak.models.ClientProvider;
|
import org.keycloak.models.ClientProvider;
|
||||||
import org.keycloak.models.ClientScopeProvider;
|
import org.keycloak.models.ClientScopeProvider;
|
||||||
import org.keycloak.models.GroupProvider;
|
import org.keycloak.models.GroupProvider;
|
||||||
import org.keycloak.models.IDPProvider;
|
import org.keycloak.models.IdentityProviderStorageProvider;
|
||||||
import org.keycloak.models.KeycloakSession;
|
import org.keycloak.models.KeycloakSession;
|
||||||
import org.keycloak.models.RealmProvider;
|
import org.keycloak.models.RealmProvider;
|
||||||
import org.keycloak.models.RoleProvider;
|
import org.keycloak.models.RoleProvider;
|
||||||
|
@ -50,7 +50,7 @@ public class DefaultDatastoreProvider implements DatastoreProvider, StoreManager
|
||||||
private ClientProvider clientProvider;
|
private ClientProvider clientProvider;
|
||||||
private ClientScopeProvider clientScopeProvider;
|
private ClientScopeProvider clientScopeProvider;
|
||||||
private GroupProvider groupProvider;
|
private GroupProvider groupProvider;
|
||||||
private IDPProvider idpProvider;
|
private IdentityProviderStorageProvider identityProviderStorageProvider;
|
||||||
private UserLoginFailureProvider userLoginFailureProvider;
|
private UserLoginFailureProvider userLoginFailureProvider;
|
||||||
private RealmProvider realmProvider;
|
private RealmProvider realmProvider;
|
||||||
private RoleProvider roleProvider;
|
private RoleProvider roleProvider;
|
||||||
|
@ -213,11 +213,11 @@ public class DefaultDatastoreProvider implements DatastoreProvider, StoreManager
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IDPProvider identityProviders() {
|
public IdentityProviderStorageProvider identityProviders() {
|
||||||
if (idpProvider == null) {
|
if (identityProviderStorageProvider == null) {
|
||||||
idpProvider = session.getProvider(IDPProvider.class);
|
identityProviderStorageProvider = session.getProvider(IdentityProviderStorageProvider.class);
|
||||||
}
|
}
|
||||||
return idpProvider;
|
return identityProviderStorageProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -18,5 +18,5 @@ package org.keycloak.models;
|
||||||
|
|
||||||
import org.keycloak.provider.ProviderFactory;
|
import org.keycloak.provider.ProviderFactory;
|
||||||
|
|
||||||
public interface IDPProviderFactory<T extends IDPProvider> extends ProviderFactory<T> {
|
public interface IdentityProviderStorageProviderFactory<T extends IdentityProviderStorageProvider> extends ProviderFactory<T> {
|
||||||
}
|
}
|
|
@ -20,18 +20,18 @@ import org.keycloak.provider.Provider;
|
||||||
import org.keycloak.provider.ProviderFactory;
|
import org.keycloak.provider.ProviderFactory;
|
||||||
import org.keycloak.provider.Spi;
|
import org.keycloak.provider.Spi;
|
||||||
|
|
||||||
public class IDPSpi implements Spi {
|
public class IdentityProviderStorageSpi implements Spi {
|
||||||
|
|
||||||
public static final String NAME = "idp";
|
public static final String NAME = "identity-provider-storage";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Class<? extends ProviderFactory> getProviderFactoryClass() {
|
public Class<? extends ProviderFactory> getProviderFactoryClass() {
|
||||||
return IDPProviderFactory.class;
|
return IdentityProviderStorageProviderFactory.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Class<? extends Provider> getProviderClass() {
|
public Class<? extends Provider> getProviderClass() {
|
||||||
return IDPProvider.class;
|
return IdentityProviderStorageProvider.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
|
@ -20,7 +20,7 @@ package org.keycloak.storage;
|
||||||
import org.keycloak.models.ClientProvider;
|
import org.keycloak.models.ClientProvider;
|
||||||
import org.keycloak.models.ClientScopeProvider;
|
import org.keycloak.models.ClientScopeProvider;
|
||||||
import org.keycloak.models.GroupProvider;
|
import org.keycloak.models.GroupProvider;
|
||||||
import org.keycloak.models.IDPProvider;
|
import org.keycloak.models.IdentityProviderStorageProvider;
|
||||||
import org.keycloak.models.RealmProvider;
|
import org.keycloak.models.RealmProvider;
|
||||||
import org.keycloak.models.RoleProvider;
|
import org.keycloak.models.RoleProvider;
|
||||||
import org.keycloak.models.SingleUseObjectProvider;
|
import org.keycloak.models.SingleUseObjectProvider;
|
||||||
|
@ -40,7 +40,7 @@ public interface DatastoreProvider extends Provider {
|
||||||
|
|
||||||
GroupProvider groups();
|
GroupProvider groups();
|
||||||
|
|
||||||
IDPProvider identityProviders();
|
IdentityProviderStorageProvider identityProviders();
|
||||||
|
|
||||||
UserLoginFailureProvider loginFailures();
|
UserLoginFailureProvider loginFailures();
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ org.keycloak.provider.ExceptionConverterSpi
|
||||||
org.keycloak.models.ClientSpi
|
org.keycloak.models.ClientSpi
|
||||||
org.keycloak.models.ClientScopeSpi
|
org.keycloak.models.ClientScopeSpi
|
||||||
org.keycloak.models.GroupSpi
|
org.keycloak.models.GroupSpi
|
||||||
org.keycloak.models.IDPSpi
|
org.keycloak.models.IdentityProviderStorageSpi
|
||||||
org.keycloak.models.RealmSpi
|
org.keycloak.models.RealmSpi
|
||||||
org.keycloak.models.RoleSpi
|
org.keycloak.models.RoleSpi
|
||||||
org.keycloak.models.DeploymentStateSpi
|
org.keycloak.models.DeploymentStateSpi
|
||||||
|
|
|
@ -26,16 +26,16 @@ import java.util.stream.Stream;
|
||||||
import org.keycloak.provider.Provider;
|
import org.keycloak.provider.Provider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@code IDPProvider} is concerned with the storage/retrieval of the configured identity providers in Keycloak. In
|
* The {@link IdentityProviderStorageProvider} is concerned with the storage/retrieval of the configured identity providers
|
||||||
* other words, it is a provider of identity providers (IDPs) and, as such, handles the CRUD operations for IDPs.
|
* in Keycloak. In other words, it is a provider of identity providers (IDPs) and, as such, handles the CRUD operations for IDPs.
|
||||||
* </p>
|
* </p>
|
||||||
* It is not to be confused with the {@code IdentityProvider} found in server-spi-private as that provider is meant to be
|
* It is not to be confused with the {@code IdentityProvider} found in server-spi-private as that provider is meant to be
|
||||||
* implemented by actual identity providers that handle the logic of authenticating users with third party brokers, such
|
* implemented by actual identity providers that handle the logic of authenticating users with third party brokers, such
|
||||||
* as Microsoft, Google, Github, LinkedIn, etc.
|
* as Microsoft, Google, GitHub, LinkedIn, etc.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:sguilhen@redhat.com">Stefan Guilhen</a>
|
* @author <a href="mailto:sguilhen@redhat.com">Stefan Guilhen</a>
|
||||||
*/
|
*/
|
||||||
public interface IDPProvider extends Provider {
|
public interface IdentityProviderStorageProvider extends Provider {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new identity provider from the specified model.
|
* Creates a new identity provider from the specified model.
|
|
@ -209,7 +209,7 @@ public interface KeycloakSession extends AutoCloseable {
|
||||||
*
|
*
|
||||||
* @return the default IDP provider.
|
* @return the default IDP provider.
|
||||||
*/
|
*/
|
||||||
IDPProvider identityProviders();
|
IdentityProviderStorageProvider identityProviders();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void close();
|
void close();
|
||||||
|
|
|
@ -443,31 +443,31 @@ public interface RealmModel extends RoleContainerModel {
|
||||||
* Returns identity providers as a stream.
|
* Returns identity providers as a stream.
|
||||||
*
|
*
|
||||||
* @return Stream of {@link IdentityProviderModel}. Never returns {@code null}.
|
* @return Stream of {@link IdentityProviderModel}. Never returns {@code null}.
|
||||||
* @deprecated Use {@link IDPProvider#getAllStream()} instead.
|
* @deprecated Use {@link IdentityProviderStorageProvider#getAllStream()} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
Stream<IdentityProviderModel> getIdentityProvidersStream();
|
Stream<IdentityProviderModel> getIdentityProvidersStream();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated Use {@link IDPProvider#getByAlias(String)} instead.
|
* @deprecated Use {@link IdentityProviderStorageProvider#getByAlias(String)} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
IdentityProviderModel getIdentityProviderByAlias(String alias);
|
IdentityProviderModel getIdentityProviderByAlias(String alias);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated Use {@link IDPProvider#create(IdentityProviderModel)} instead.
|
* @deprecated Use {@link IdentityProviderStorageProvider#create(IdentityProviderModel)} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
void addIdentityProvider(IdentityProviderModel identityProvider);
|
void addIdentityProvider(IdentityProviderModel identityProvider);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated Use {@link IDPProvider#remove(String)} instead.
|
* @deprecated Use {@link IdentityProviderStorageProvider#remove(String)} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
void removeIdentityProviderByAlias(String alias);
|
void removeIdentityProviderByAlias(String alias);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated Use {@link IDPProvider#update(IdentityProviderModel)} instead.
|
* @deprecated Use {@link IdentityProviderStorageProvider#update(IdentityProviderModel)} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
void updateIdentityProvider(IdentityProviderModel identityProvider);
|
void updateIdentityProvider(IdentityProviderModel identityProvider);
|
||||||
|
@ -667,7 +667,7 @@ public interface RealmModel extends RoleContainerModel {
|
||||||
void setDefaultRole(RoleModel role);
|
void setDefaultRole(RoleModel role);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated use {@link IDPProvider#isIdentityFederationEnabled()} instead.
|
* @deprecated use {@link IdentityProviderStorageProvider#isIdentityFederationEnabled()} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
boolean isIdentityFederationEnabled();
|
boolean isIdentityFederationEnabled();
|
||||||
|
|
|
@ -22,7 +22,7 @@ import org.keycloak.authentication.authenticators.broker.AbstractIdpAuthenticato
|
||||||
import org.keycloak.authentication.authenticators.broker.util.SerializedBrokeredIdentityContext;
|
import org.keycloak.authentication.authenticators.broker.util.SerializedBrokeredIdentityContext;
|
||||||
import org.keycloak.common.Profile;
|
import org.keycloak.common.Profile;
|
||||||
import org.keycloak.models.FederatedIdentityModel;
|
import org.keycloak.models.FederatedIdentityModel;
|
||||||
import org.keycloak.models.IDPProvider;
|
import org.keycloak.models.IdentityProviderStorageProvider;
|
||||||
import org.keycloak.models.IdentityProviderModel;
|
import org.keycloak.models.IdentityProviderModel;
|
||||||
import org.keycloak.models.KeycloakSession;
|
import org.keycloak.models.KeycloakSession;
|
||||||
import org.keycloak.models.OrderedModel;
|
import org.keycloak.models.OrderedModel;
|
||||||
|
@ -223,19 +223,19 @@ public class IdentityProviderBean {
|
||||||
* @return the custom {@link Predicate} used as a last filter before conversion into {@link IdentityProvider}
|
* @return the custom {@link Predicate} used as a last filter before conversion into {@link IdentityProvider}
|
||||||
*/
|
*/
|
||||||
protected Predicate<IdentityProviderModel> federatedProviderPredicate() {
|
protected Predicate<IdentityProviderModel> federatedProviderPredicate() {
|
||||||
return IDPProvider.LoginFilter.getLoginPredicate();
|
return IdentityProviderStorageProvider.LoginFilter.getLoginPredicate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds and returns a list of {@link IdentityProvider} instances that will be available for login. This method goes
|
* Builds and returns a list of {@link IdentityProvider} instances that will be available for login. This method goes
|
||||||
* to the {@link IDPProvider} to fetch the IDPs that can be used for login (enabled, not link-only and not set to be
|
* to the {@link IdentityProviderStorageProvider} to fetch the IDPs that can be used for login (enabled, not link-only and not set to be
|
||||||
* hidden on login page).
|
* hidden on login page).
|
||||||
*
|
*
|
||||||
* @param existingIDP the alias of the IDP that must be filtered out from the result (used when linking a new IDP to a user's account).
|
* @param existingIDP the alias of the IDP that must be filtered out from the result (used when linking a new IDP to a user's account).
|
||||||
* @return a {@link List} containing the constructed {@link IdentityProvider}s.
|
* @return a {@link List} containing the constructed {@link IdentityProvider}s.
|
||||||
*/
|
*/
|
||||||
protected List<IdentityProvider> searchForIdentityProviders(String existingIDP) {
|
protected List<IdentityProvider> searchForIdentityProviders(String existingIDP) {
|
||||||
return session.identityProviders().getForLogin(IDPProvider.FetchMode.REALM_ONLY, null)
|
return session.identityProviders().getForLogin(IdentityProviderStorageProvider.FetchMode.REALM_ONLY, null)
|
||||||
.filter(idp -> !Objects.equals(existingIDP, idp.getAlias()))
|
.filter(idp -> !Objects.equals(existingIDP, idp.getAlias()))
|
||||||
.map(idp -> createIdentityProvider(this.realm, this.baseURI, idp))
|
.map(idp -> createIdentityProvider(this.realm, this.baseURI, idp))
|
||||||
.sorted(IDP_COMPARATOR_INSTANCE).toList();
|
.sorted(IDP_COMPARATOR_INSTANCE).toList();
|
||||||
|
|
|
@ -22,11 +22,14 @@ import java.util.Objects;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import org.keycloak.forms.login.freemarker.model.IdentityProviderBean;
|
import org.keycloak.forms.login.freemarker.model.IdentityProviderBean;
|
||||||
import org.keycloak.models.IDPProvider;
|
|
||||||
import org.keycloak.models.IdentityProviderModel;
|
import org.keycloak.models.IdentityProviderModel;
|
||||||
import org.keycloak.models.OrganizationModel;
|
import org.keycloak.models.OrganizationModel;
|
||||||
import org.keycloak.organization.utils.Organizations;
|
import org.keycloak.organization.utils.Organizations;
|
||||||
|
|
||||||
|
import static org.keycloak.models.IdentityProviderStorageProvider.FetchMode.ALL;
|
||||||
|
import static org.keycloak.models.IdentityProviderStorageProvider.FetchMode.ORG_ONLY;
|
||||||
|
import static org.keycloak.models.IdentityProviderStorageProvider.FetchMode.REALM_ONLY;
|
||||||
|
|
||||||
public class OrganizationAwareIdentityProviderBean extends IdentityProviderBean {
|
public class OrganizationAwareIdentityProviderBean extends IdentityProviderBean {
|
||||||
|
|
||||||
private final OrganizationModel organization;
|
private final OrganizationModel organization;
|
||||||
|
@ -52,7 +55,7 @@ public class OrganizationAwareIdentityProviderBean extends IdentityProviderBean
|
||||||
protected List<IdentityProvider> searchForIdentityProviders(String existingIDP) {
|
protected List<IdentityProvider> searchForIdentityProviders(String existingIDP) {
|
||||||
if (onlyRealmBrokers) {
|
if (onlyRealmBrokers) {
|
||||||
// we only want the realm-level IDPs - i.e. those not associated with any orgs.
|
// we only want the realm-level IDPs - i.e. those not associated with any orgs.
|
||||||
return session.identityProviders().getForLogin(IDPProvider.FetchMode.REALM_ONLY, null)
|
return session.identityProviders().getForLogin(REALM_ONLY, null)
|
||||||
.filter(idp -> !Objects.equals(existingIDP, idp.getAlias()))
|
.filter(idp -> !Objects.equals(existingIDP, idp.getAlias()))
|
||||||
.map(idp -> createIdentityProvider(this.realm, this.baseURI, idp))
|
.map(idp -> createIdentityProvider(this.realm, this.baseURI, idp))
|
||||||
.sorted(IDP_COMPARATOR_INSTANCE).toList();
|
.sorted(IDP_COMPARATOR_INSTANCE).toList();
|
||||||
|
@ -68,12 +71,12 @@ public class OrganizationAwareIdentityProviderBean extends IdentityProviderBean
|
||||||
.sorted(IDP_COMPARATOR_INSTANCE).toList();
|
.sorted(IDP_COMPARATOR_INSTANCE).toList();
|
||||||
}
|
}
|
||||||
// we don't have a specific organization - fetch public enabled IDPs linked to any org.
|
// we don't have a specific organization - fetch public enabled IDPs linked to any org.
|
||||||
return session.identityProviders().getForLogin(IDPProvider.FetchMode.ORG_ONLY, null)
|
return session.identityProviders().getForLogin(ORG_ONLY, null)
|
||||||
.filter(idp -> !Objects.equals(existingIDP, idp.getAlias()))
|
.filter(idp -> !Objects.equals(existingIDP, idp.getAlias()))
|
||||||
.map(idp -> createIdentityProvider(this.realm, this.baseURI, idp))
|
.map(idp -> createIdentityProvider(this.realm, this.baseURI, idp))
|
||||||
.sorted(IDP_COMPARATOR_INSTANCE).toList();
|
.sorted(IDP_COMPARATOR_INSTANCE).toList();
|
||||||
}
|
}
|
||||||
return session.identityProviders().getForLogin(IDPProvider.FetchMode.ALL, this.organization != null ? this.organization.getId() : null)
|
return session.identityProviders().getForLogin(ALL, this.organization != null ? this.organization.getId() : null)
|
||||||
.filter(idp -> !Objects.equals(existingIDP, idp.getAlias()))
|
.filter(idp -> !Objects.equals(existingIDP, idp.getAlias()))
|
||||||
.map(idp -> createIdentityProvider(this.realm, this.baseURI, idp))
|
.map(idp -> createIdentityProvider(this.realm, this.baseURI, idp))
|
||||||
.sorted(IDP_COMPARATOR_INSTANCE).toList();
|
.sorted(IDP_COMPARATOR_INSTANCE).toList();
|
||||||
|
|
|
@ -25,7 +25,7 @@ import org.keycloak.keys.DefaultKeyManager;
|
||||||
import org.keycloak.models.ClientProvider;
|
import org.keycloak.models.ClientProvider;
|
||||||
import org.keycloak.models.ClientScopeProvider;
|
import org.keycloak.models.ClientScopeProvider;
|
||||||
import org.keycloak.models.GroupProvider;
|
import org.keycloak.models.GroupProvider;
|
||||||
import org.keycloak.models.IDPProvider;
|
import org.keycloak.models.IdentityProviderStorageProvider;
|
||||||
import org.keycloak.models.KeyManager;
|
import org.keycloak.models.KeyManager;
|
||||||
import org.keycloak.models.KeycloakContext;
|
import org.keycloak.models.KeycloakContext;
|
||||||
import org.keycloak.models.KeycloakSession;
|
import org.keycloak.models.KeycloakSession;
|
||||||
|
@ -318,7 +318,7 @@ public abstract class DefaultKeycloakSession implements KeycloakSession {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IDPProvider identityProviders() {
|
public IdentityProviderStorageProvider identityProviders() {
|
||||||
return getDatastoreProvider().identityProviders();
|
return getDatastoreProvider().identityProviders();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,9 @@
|
||||||
*/
|
*/
|
||||||
package org.keycloak.testsuite.model.parameters;
|
package org.keycloak.testsuite.model.parameters;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
import org.keycloak.authorization.jpa.store.JPAAuthorizationStoreFactory;
|
import org.keycloak.authorization.jpa.store.JPAAuthorizationStoreFactory;
|
||||||
import org.keycloak.broker.provider.IdentityProviderFactory;
|
import org.keycloak.broker.provider.IdentityProviderFactory;
|
||||||
import org.keycloak.broker.provider.IdentityProviderSpi;
|
import org.keycloak.broker.provider.IdentityProviderSpi;
|
||||||
|
@ -27,31 +30,29 @@ import org.keycloak.connections.jpa.updater.liquibase.conn.LiquibaseConnectionPr
|
||||||
import org.keycloak.connections.jpa.updater.liquibase.conn.LiquibaseConnectionSpi;
|
import org.keycloak.connections.jpa.updater.liquibase.conn.LiquibaseConnectionSpi;
|
||||||
import org.keycloak.connections.jpa.updater.liquibase.lock.LiquibaseDBLockProviderFactory;
|
import org.keycloak.connections.jpa.updater.liquibase.lock.LiquibaseDBLockProviderFactory;
|
||||||
import org.keycloak.events.jpa.JpaEventStoreProviderFactory;
|
import org.keycloak.events.jpa.JpaEventStoreProviderFactory;
|
||||||
import org.keycloak.models.IDPSpi;
|
import org.keycloak.migration.MigrationProviderFactory;
|
||||||
|
import org.keycloak.migration.MigrationSpi;
|
||||||
|
import org.keycloak.models.IdentityProviderStorageSpi;
|
||||||
import org.keycloak.models.dblock.DBLockSpi;
|
import org.keycloak.models.dblock.DBLockSpi;
|
||||||
import org.keycloak.models.jpa.JpaIDPProviderFactory;
|
import org.keycloak.models.jpa.JpaClientProviderFactory;
|
||||||
|
import org.keycloak.models.jpa.JpaClientScopeProviderFactory;
|
||||||
|
import org.keycloak.models.jpa.JpaGroupProviderFactory;
|
||||||
|
import org.keycloak.models.jpa.JpaIdentityProviderStorageProviderFactory;
|
||||||
|
import org.keycloak.models.jpa.JpaRealmProviderFactory;
|
||||||
|
import org.keycloak.models.jpa.JpaRoleProviderFactory;
|
||||||
|
import org.keycloak.models.jpa.JpaUserProviderFactory;
|
||||||
import org.keycloak.models.jpa.session.JpaRevokedTokensPersisterProviderFactory;
|
import org.keycloak.models.jpa.session.JpaRevokedTokensPersisterProviderFactory;
|
||||||
import org.keycloak.models.jpa.session.JpaUserSessionPersisterProviderFactory;
|
import org.keycloak.models.jpa.session.JpaUserSessionPersisterProviderFactory;
|
||||||
import org.keycloak.models.session.RevokedTokenPersisterSpi;
|
import org.keycloak.models.session.RevokedTokenPersisterSpi;
|
||||||
import org.keycloak.models.session.UserSessionPersisterSpi;
|
import org.keycloak.models.session.UserSessionPersisterSpi;
|
||||||
import org.keycloak.migration.MigrationProviderFactory;
|
import org.keycloak.protocol.LoginProtocolFactory;
|
||||||
import org.keycloak.migration.MigrationSpi;
|
import org.keycloak.protocol.LoginProtocolSpi;
|
||||||
import org.keycloak.testsuite.model.KeycloakModelParameters;
|
|
||||||
import org.keycloak.models.jpa.JpaClientProviderFactory;
|
|
||||||
import org.keycloak.models.jpa.JpaClientScopeProviderFactory;
|
|
||||||
import org.keycloak.models.jpa.JpaGroupProviderFactory;
|
|
||||||
import org.keycloak.models.jpa.JpaRealmProviderFactory;
|
|
||||||
import org.keycloak.models.jpa.JpaRoleProviderFactory;
|
|
||||||
import org.keycloak.models.jpa.JpaUserProviderFactory;
|
|
||||||
import org.keycloak.provider.ProviderFactory;
|
import org.keycloak.provider.ProviderFactory;
|
||||||
import org.keycloak.provider.Spi;
|
import org.keycloak.provider.Spi;
|
||||||
import org.keycloak.storage.DatastoreSpi;
|
import org.keycloak.storage.DatastoreSpi;
|
||||||
import org.keycloak.storage.datastore.DefaultDatastoreProviderFactory;
|
import org.keycloak.storage.datastore.DefaultDatastoreProviderFactory;
|
||||||
import org.keycloak.testsuite.model.Config;
|
import org.keycloak.testsuite.model.Config;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import org.keycloak.testsuite.model.KeycloakModelParameters;
|
||||||
import java.util.Set;
|
|
||||||
import org.keycloak.protocol.LoginProtocolFactory;
|
|
||||||
import org.keycloak.protocol.LoginProtocolSpi;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -76,7 +77,7 @@ public class Jpa extends KeycloakModelParameters {
|
||||||
.add(DBLockSpi.class)
|
.add(DBLockSpi.class)
|
||||||
|
|
||||||
//required for FederatedIdentityModel
|
//required for FederatedIdentityModel
|
||||||
.add(IDPSpi.class)
|
.add(IdentityProviderStorageSpi.class)
|
||||||
.add(IdentityProviderSpi.class)
|
.add(IdentityProviderSpi.class)
|
||||||
|
|
||||||
.build();
|
.build();
|
||||||
|
@ -91,7 +92,7 @@ public class Jpa extends KeycloakModelParameters {
|
||||||
.add(JpaClientScopeProviderFactory.class)
|
.add(JpaClientScopeProviderFactory.class)
|
||||||
.add(JpaEventStoreProviderFactory.class)
|
.add(JpaEventStoreProviderFactory.class)
|
||||||
.add(JpaGroupProviderFactory.class)
|
.add(JpaGroupProviderFactory.class)
|
||||||
.add(JpaIDPProviderFactory.class)
|
.add(JpaIdentityProviderStorageProviderFactory.class)
|
||||||
.add(JpaRealmProviderFactory.class)
|
.add(JpaRealmProviderFactory.class)
|
||||||
.add(JpaRoleProviderFactory.class)
|
.add(JpaRoleProviderFactory.class)
|
||||||
.add(JpaUpdaterProviderFactory.class)
|
.add(JpaUpdaterProviderFactory.class)
|
||||||
|
|
Loading…
Reference in a new issue