Search in sources :

Example 31 with ProtocolMapperRepresentation

use of org.keycloak.representations.idm.ProtocolMapperRepresentation in project keycloak by keycloak.

the class RepresentationToModel method updateClientProtocolMappers.

public static void updateClientProtocolMappers(ClientRepresentation rep, ClientModel resource) {
    if (rep.getProtocolMappers() != null) {
        Map<String, ProtocolMapperModel> existingProtocolMappers = resource.getProtocolMappersStream().collect(Collectors.toMap(mapper -> generateProtocolNameKey(mapper.getProtocol(), mapper.getName()), Function.identity()));
        for (ProtocolMapperRepresentation protocolMapperRepresentation : rep.getProtocolMappers()) {
            String protocolNameKey = generateProtocolNameKey(protocolMapperRepresentation.getProtocol(), protocolMapperRepresentation.getName());
            ProtocolMapperModel existingMapper = existingProtocolMappers.get(protocolNameKey);
            if (existingMapper != null) {
                ProtocolMapperModel updatedProtocolMapperModel = toModel(protocolMapperRepresentation);
                updatedProtocolMapperModel.setId(existingMapper.getId());
                resource.updateProtocolMapper(updatedProtocolMapperModel);
                existingProtocolMappers.remove(protocolNameKey);
            } else {
                resource.addProtocolMapper(toModel(protocolMapperRepresentation));
            }
        }
        for (Map.Entry<String, ProtocolMapperModel> entryToDelete : existingProtocolMappers.entrySet()) {
            resource.removeProtocolMapper(entryToDelete.getValue());
        }
    }
}
Also used : Arrays(java.util.Arrays) ResourceRepresentation(org.keycloak.representations.idm.authorization.ResourceRepresentation) AuthenticationExecutionExportRepresentation(org.keycloak.representations.idm.AuthenticationExecutionExportRepresentation) LDAPConstants(org.keycloak.models.LDAPConstants) UserFederatedStorageProvider(org.keycloak.storage.federated.UserFederatedStorageProvider) OAuth2DeviceConfig(org.keycloak.models.OAuth2DeviceConfig) Map(java.util.Map) SocialLinkRepresentation(org.keycloak.representations.idm.SocialLinkRepresentation) UserConsentRepresentation(org.keycloak.representations.idm.UserConsentRepresentation) UserCredentialModel(org.keycloak.models.UserCredentialModel) PasswordCredentialData(org.keycloak.models.credential.dto.PasswordCredentialData) FederatedIdentityRepresentation(org.keycloak.representations.idm.FederatedIdentityRepresentation) Set(java.util.Set) IdentityProviderModel(org.keycloak.models.IdentityProviderModel) PolicyStore(org.keycloak.authorization.store.PolicyStore) ResourceStore(org.keycloak.authorization.store.ResourceStore) ClientTemplateRepresentation(org.keycloak.representations.idm.ClientTemplateRepresentation) ClientRepresentation(org.keycloak.representations.idm.ClientRepresentation) SocialIdentityProvider(org.keycloak.broker.social.SocialIdentityProvider) ResourceServerRepresentation(org.keycloak.representations.idm.authorization.ResourceServerRepresentation) SslRequired(org.keycloak.common.enums.SslRequired) PermissionTicketStore(org.keycloak.authorization.store.PermissionTicketStore) OAuth2Constants(org.keycloak.OAuth2Constants) IdentityProviderRepresentation(org.keycloak.representations.idm.IdentityProviderRepresentation) ProtocolMapperModel(org.keycloak.models.ProtocolMapperModel) ClaimRepresentation(org.keycloak.representations.idm.ClaimRepresentation) Constants(org.keycloak.models.Constants) ProviderConfigProperty(org.keycloak.provider.ProviderConfigProperty) MigrationProvider(org.keycloak.migration.MigrationProvider) ArrayList(java.util.ArrayList) PermissionTicket(org.keycloak.authorization.model.PermissionTicket) OTPSecretData(org.keycloak.models.credential.dto.OTPSecretData) UserModel(org.keycloak.models.UserModel) UserFederationProviderRepresentation(org.keycloak.representations.idm.UserFederationProviderRepresentation) AuthenticationExecutionModel(org.keycloak.models.AuthenticationExecutionModel) UserProfileProvider(org.keycloak.userprofile.UserProfileProvider) AuthenticationFlowRepresentation(org.keycloak.representations.idm.AuthenticationFlowRepresentation) MigrationUtils(org.keycloak.migration.migrators.MigrationUtils) ValidationUtil(org.keycloak.validation.ValidationUtil) PolicyProviderFactory(org.keycloak.authorization.policy.provider.PolicyProviderFactory) CredentialModel(org.keycloak.credential.CredentialModel) UserStorageProvider(org.keycloak.storage.UserStorageProvider) WebAuthnPolicy(org.keycloak.models.WebAuthnPolicy) KeycloakSession(org.keycloak.models.KeycloakSession) RequiredActionProviderRepresentation(org.keycloak.representations.idm.RequiredActionProviderRepresentation) IOException(java.io.IOException) ResourceServerStore(org.keycloak.authorization.store.ResourceServerStore) PasswordCredentialModel(org.keycloak.models.credential.PasswordCredentialModel) MultivaluedHashMap(org.keycloak.common.util.MultivaluedHashMap) AbstractPolicyRepresentation(org.keycloak.representations.idm.authorization.AbstractPolicyRepresentation) ListIterator(java.util.ListIterator) MigrateTo8_0_0(org.keycloak.migration.migrators.MigrateTo8_0_0) PasswordPolicyNotMetException(org.keycloak.policy.PasswordPolicyNotMetException) Config(org.keycloak.Config) GroupRepresentation(org.keycloak.representations.idm.GroupRepresentation) ClaimMask(org.keycloak.models.ClaimMask) ComponentModel(org.keycloak.component.ComponentModel) BrowserSecurityHeaders(org.keycloak.models.BrowserSecurityHeaders) AuthenticationExecutionRepresentation(org.keycloak.representations.idm.AuthenticationExecutionRepresentation) CredentialRepresentation(org.keycloak.representations.idm.CredentialRepresentation) ResourceOwnerRepresentation(org.keycloak.representations.idm.authorization.ResourceOwnerRepresentation) UserStorageProviderModel(org.keycloak.storage.UserStorageProviderModel) AuthorizationProvider(org.keycloak.authorization.AuthorizationProvider) PolicyEnforcementMode(org.keycloak.representations.idm.authorization.PolicyEnforcementMode) UriUtils(org.keycloak.common.util.UriUtils) ClientScopeModel(org.keycloak.models.ClientScopeModel) RealmModel(org.keycloak.models.RealmModel) AuthorizationProviderFactory(org.keycloak.authorization.AuthorizationProviderFactory) RoleModel(org.keycloak.models.RoleModel) Collectors(java.util.stream.Collectors) RealmRepresentation(org.keycloak.representations.idm.RealmRepresentation) ProtocolMapperRepresentation(org.keycloak.representations.idm.ProtocolMapperRepresentation) PermissionTicketRepresentation(org.keycloak.representations.idm.authorization.PermissionTicketRepresentation) UserProvider(org.keycloak.models.UserProvider) List(java.util.List) ScopeStore(org.keycloak.authorization.store.ScopeStore) ArtifactBindingUtils.computeArtifactBindingIdentifierString(org.keycloak.protocol.saml.util.ArtifactBindingUtils.computeArtifactBindingIdentifierString) Entry(java.util.Map.Entry) RequiredActionProviderModel(org.keycloak.models.RequiredActionProviderModel) ClientModel(org.keycloak.models.ClientModel) Scope(org.keycloak.authorization.model.Scope) IdentityProviderFactory(org.keycloak.broker.provider.IdentityProviderFactory) Profile(org.keycloak.common.Profile) IdentityProviderMapperModel(org.keycloak.models.IdentityProviderMapperModel) ScopeMappingRepresentation(org.keycloak.representations.idm.ScopeMappingRepresentation) Logger(org.jboss.logging.Logger) StoreFactory(org.keycloak.authorization.store.StoreFactory) HashMap(java.util.HashMap) OAuthClientRepresentation(org.keycloak.representations.idm.OAuthClientRepresentation) Function(java.util.function.Function) PolicyRepresentation(org.keycloak.representations.idm.authorization.PolicyRepresentation) HashSet(java.util.HashSet) ComponentRepresentation(org.keycloak.representations.idm.ComponentRepresentation) ComponentExportRepresentation(org.keycloak.representations.idm.ComponentExportRepresentation) UserFederationMapperRepresentation(org.keycloak.representations.idm.UserFederationMapperRepresentation) UserConsentModel(org.keycloak.models.UserConsentModel) KeyProvider(org.keycloak.keys.KeyProvider) AuthenticatorConfigModel(org.keycloak.models.AuthenticatorConfigModel) IdentityProviderMapperRepresentation(org.keycloak.representations.idm.IdentityProviderMapperRepresentation) AuthenticationFlowModel(org.keycloak.models.AuthenticationFlowModel) OTPPolicy(org.keycloak.models.OTPPolicy) GroupModel(org.keycloak.models.GroupModel) ScopeRepresentation(org.keycloak.representations.idm.authorization.ScopeRepresentation) LinkedList(java.util.LinkedList) RoleRepresentation(org.keycloak.representations.idm.RoleRepresentation) IdentityProvider(org.keycloak.broker.provider.IdentityProvider) ScopeContainerModel(org.keycloak.models.ScopeContainerModel) ResourceServer(org.keycloak.authorization.model.ResourceServer) FederatedIdentityModel(org.keycloak.models.FederatedIdentityModel) RolesRepresentation(org.keycloak.representations.idm.RolesRepresentation) OTPCredentialData(org.keycloak.models.credential.dto.OTPCredentialData) UserRepresentation(org.keycloak.representations.idm.UserRepresentation) Iterator(java.util.Iterator) CibaConfig(org.keycloak.models.CibaConfig) ClientScopeRepresentation(org.keycloak.representations.idm.ClientScopeRepresentation) ApplicationRepresentation(org.keycloak.representations.idm.ApplicationRepresentation) OTPCredentialModel(org.keycloak.models.credential.OTPCredentialModel) DecisionStrategy(org.keycloak.representations.idm.authorization.DecisionStrategy) JsonSerialization(org.keycloak.util.JsonSerialization) Policy(org.keycloak.authorization.model.Policy) AuthenticatorConfigRepresentation(org.keycloak.representations.idm.AuthenticatorConfigRepresentation) ModelException(org.keycloak.models.ModelException) ParConfig(org.keycloak.models.ParConfig) PasswordPolicy(org.keycloak.models.PasswordPolicy) Resource(org.keycloak.authorization.model.Resource) ProtocolMapperRepresentation(org.keycloak.representations.idm.ProtocolMapperRepresentation) ArtifactBindingUtils.computeArtifactBindingIdentifierString(org.keycloak.protocol.saml.util.ArtifactBindingUtils.computeArtifactBindingIdentifierString) Map(java.util.Map) MultivaluedHashMap(org.keycloak.common.util.MultivaluedHashMap) HashMap(java.util.HashMap) ProtocolMapperModel(org.keycloak.models.ProtocolMapperModel)

Example 32 with ProtocolMapperRepresentation

use of org.keycloak.representations.idm.ProtocolMapperRepresentation in project keycloak by keycloak.

the class RepresentationToModel method convertDeprecatedApplications.

private static void convertDeprecatedApplications(KeycloakSession session, RealmRepresentation realm) {
    if (realm.getApplications() != null || realm.getOauthClients() != null) {
        if (realm.getClients() == null) {
            realm.setClients(new LinkedList<ClientRepresentation>());
        }
        List<ApplicationRepresentation> clients = new LinkedList<>();
        if (realm.getApplications() != null) {
            clients.addAll(realm.getApplications());
        }
        if (realm.getOauthClients() != null) {
            clients.addAll(realm.getOauthClients());
        }
        for (ApplicationRepresentation app : clients) {
            app.setClientId(app.getName());
            app.setName(null);
            if (app instanceof OAuthClientRepresentation) {
                app.setConsentRequired(true);
                app.setFullScopeAllowed(false);
            }
            if (app.getProtocolMappers() == null && app.getClaims() != null) {
                long mask = getClaimsMask(app.getClaims());
                List<ProtocolMapperRepresentation> convertedProtocolMappers = session.getProvider(MigrationProvider.class).getMappersForClaimMask(mask);
                app.setProtocolMappers(convertedProtocolMappers);
                app.setClaims(null);
            }
            realm.getClients().add(app);
        }
    }
    if (realm.getApplicationScopeMappings() != null && realm.getClientScopeMappings() == null) {
        realm.setClientScopeMappings(realm.getApplicationScopeMappings());
    }
    if (realm.getRoles() != null && realm.getRoles().getApplication() != null && realm.getRoles().getClient() == null) {
        realm.getRoles().setClient(realm.getRoles().getApplication());
    }
    if (realm.getUsers() != null) {
        for (UserRepresentation user : realm.getUsers()) {
            if (user.getApplicationRoles() != null && user.getClientRoles() == null) {
                user.setClientRoles(user.getApplicationRoles());
            }
        }
    }
    if (realm.getRoles() != null && realm.getRoles().getRealm() != null) {
        for (RoleRepresentation role : realm.getRoles().getRealm()) {
            if (role.getComposites() != null && role.getComposites().getApplication() != null && role.getComposites().getClient() == null) {
                role.getComposites().setClient(role.getComposites().getApplication());
            }
        }
    }
    if (realm.getRoles() != null && realm.getRoles().getClient() != null) {
        for (Map.Entry<String, List<RoleRepresentation>> clientRoles : realm.getRoles().getClient().entrySet()) {
            for (RoleRepresentation role : clientRoles.getValue()) {
                if (role.getComposites() != null && role.getComposites().getApplication() != null && role.getComposites().getClient() == null) {
                    role.getComposites().setClient(role.getComposites().getApplication());
                }
            }
        }
    }
}
Also used : RoleRepresentation(org.keycloak.representations.idm.RoleRepresentation) OAuthClientRepresentation(org.keycloak.representations.idm.OAuthClientRepresentation) ArtifactBindingUtils.computeArtifactBindingIdentifierString(org.keycloak.protocol.saml.util.ArtifactBindingUtils.computeArtifactBindingIdentifierString) LinkedList(java.util.LinkedList) ClientRepresentation(org.keycloak.representations.idm.ClientRepresentation) OAuthClientRepresentation(org.keycloak.representations.idm.OAuthClientRepresentation) ProtocolMapperRepresentation(org.keycloak.representations.idm.ProtocolMapperRepresentation) ApplicationRepresentation(org.keycloak.representations.idm.ApplicationRepresentation) MigrationProvider(org.keycloak.migration.MigrationProvider) ArrayList(java.util.ArrayList) List(java.util.List) LinkedList(java.util.LinkedList) Map(java.util.Map) MultivaluedHashMap(org.keycloak.common.util.MultivaluedHashMap) HashMap(java.util.HashMap) UserRepresentation(org.keycloak.representations.idm.UserRepresentation)

Example 33 with ProtocolMapperRepresentation

use of org.keycloak.representations.idm.ProtocolMapperRepresentation in project keycloak by keycloak.

the class RepresentationToModel method createClient.

private static ClientModel createClient(KeycloakSession session, RealmModel realm, ClientRepresentation resourceRep, Map<String, String> mappedFlows) {
    logger.debugv("Create client: {0}", resourceRep.getClientId());
    ClientModel client = resourceRep.getId() != null ? realm.addClient(resourceRep.getId(), resourceRep.getClientId()) : realm.addClient(resourceRep.getClientId());
    if (resourceRep.getName() != null)
        client.setName(resourceRep.getName());
    if (resourceRep.getDescription() != null)
        client.setDescription(resourceRep.getDescription());
    if (resourceRep.isEnabled() != null)
        client.setEnabled(resourceRep.isEnabled());
    if (resourceRep.isAlwaysDisplayInConsole() != null)
        client.setAlwaysDisplayInConsole(resourceRep.isAlwaysDisplayInConsole());
    client.setManagementUrl(resourceRep.getAdminUrl());
    if (resourceRep.isSurrogateAuthRequired() != null)
        client.setSurrogateAuthRequired(resourceRep.isSurrogateAuthRequired());
    if (resourceRep.getRootUrl() != null)
        client.setRootUrl(resourceRep.getRootUrl());
    if (resourceRep.getBaseUrl() != null)
        client.setBaseUrl(resourceRep.getBaseUrl());
    if (resourceRep.isBearerOnly() != null)
        client.setBearerOnly(resourceRep.isBearerOnly());
    if (resourceRep.isConsentRequired() != null)
        client.setConsentRequired(resourceRep.isConsentRequired());
    // Backwards compatibility only
    if (resourceRep.isDirectGrantsOnly() != null) {
        logger.warn("Using deprecated 'directGrantsOnly' configuration in JSON representation. It will be removed in future versions");
        client.setStandardFlowEnabled(!resourceRep.isDirectGrantsOnly());
        client.setDirectAccessGrantsEnabled(resourceRep.isDirectGrantsOnly());
    }
    if (resourceRep.isStandardFlowEnabled() != null)
        client.setStandardFlowEnabled(resourceRep.isStandardFlowEnabled());
    if (resourceRep.isImplicitFlowEnabled() != null)
        client.setImplicitFlowEnabled(resourceRep.isImplicitFlowEnabled());
    if (resourceRep.isDirectAccessGrantsEnabled() != null)
        client.setDirectAccessGrantsEnabled(resourceRep.isDirectAccessGrantsEnabled());
    if (resourceRep.isServiceAccountsEnabled() != null)
        client.setServiceAccountsEnabled(resourceRep.isServiceAccountsEnabled());
    if (resourceRep.isPublicClient() != null)
        client.setPublicClient(resourceRep.isPublicClient());
    if (resourceRep.isFrontchannelLogout() != null)
        client.setFrontchannelLogout(resourceRep.isFrontchannelLogout());
    // set defaults to openid-connect if no protocol specified
    if (resourceRep.getProtocol() != null) {
        client.setProtocol(resourceRep.getProtocol());
    } else {
        client.setProtocol(OIDC);
    }
    if (resourceRep.getNodeReRegistrationTimeout() != null) {
        client.setNodeReRegistrationTimeout(resourceRep.getNodeReRegistrationTimeout());
    } else {
        client.setNodeReRegistrationTimeout(-1);
    }
    if (resourceRep.getNotBefore() != null) {
        client.setNotBefore(resourceRep.getNotBefore());
    }
    if (resourceRep.getClientAuthenticatorType() != null) {
        client.setClientAuthenticatorType(resourceRep.getClientAuthenticatorType());
    } else {
        client.setClientAuthenticatorType(KeycloakModelUtils.getDefaultClientAuthenticatorType());
    }
    client.setSecret(resourceRep.getSecret());
    if (resourceRep.getAttributes() != null) {
        for (Map.Entry<String, String> entry : resourceRep.getAttributes().entrySet()) {
            client.setAttribute(entry.getKey(), entry.getValue());
        }
    }
    if ("saml".equals(resourceRep.getProtocol()) && (resourceRep.getAttributes() == null || !resourceRep.getAttributes().containsKey("saml.artifact.binding.identifier"))) {
        client.setAttribute("saml.artifact.binding.identifier", computeArtifactBindingIdentifierString(resourceRep.getClientId()));
    }
    if (resourceRep.getAuthenticationFlowBindingOverrides() != null) {
        for (Map.Entry<String, String> entry : resourceRep.getAuthenticationFlowBindingOverrides().entrySet()) {
            if (entry.getValue() == null || entry.getValue().trim().equals("")) {
                continue;
            } else {
                String flowId = entry.getValue();
                // check if flow id was mapped when the flows were imported
                if (mappedFlows != null && mappedFlows.containsKey(flowId)) {
                    flowId = mappedFlows.get(flowId);
                }
                if (client.getRealm().getAuthenticationFlowById(flowId) == null) {
                    throw new RuntimeException("Unable to resolve auth flow binding override for: " + entry.getKey());
                }
                client.setAuthenticationFlowBindingOverride(entry.getKey(), flowId);
            }
        }
    }
    if (resourceRep.getRedirectUris() != null) {
        for (String redirectUri : resourceRep.getRedirectUris()) {
            client.addRedirectUri(redirectUri);
        }
    }
    if (resourceRep.getWebOrigins() != null) {
        for (String webOrigin : resourceRep.getWebOrigins()) {
            logger.debugv("Client: {0} webOrigin: {1}", resourceRep.getClientId(), webOrigin);
            client.addWebOrigin(webOrigin);
        }
    } else {
        // add origins from redirect uris
        if (resourceRep.getRedirectUris() != null) {
            Set<String> origins = new HashSet<String>();
            for (String redirectUri : resourceRep.getRedirectUris()) {
                logger.debugv("add redirect-uri to origin: {0}", redirectUri);
                if (redirectUri.startsWith("http")) {
                    String origin = UriUtils.getOrigin(redirectUri);
                    logger.debugv("adding default client origin: {0}", origin);
                    origins.add(origin);
                }
            }
            if (origins.size() > 0) {
                client.setWebOrigins(origins);
            }
        }
    }
    if (resourceRep.getRegisteredNodes() != null) {
        for (Map.Entry<String, Integer> entry : resourceRep.getRegisteredNodes().entrySet()) {
            client.registerNode(entry.getKey(), entry.getValue());
        }
    }
    if (resourceRep.getProtocolMappers() != null) {
        // first, remove all default/built in mappers
        client.getProtocolMappersStream().collect(Collectors.toList()).forEach(client::removeProtocolMapper);
        for (ProtocolMapperRepresentation mapper : resourceRep.getProtocolMappers()) {
            client.addProtocolMapper(toModel(mapper));
        }
        MigrationUtils.updateProtocolMappers(client);
    }
    if (resourceRep.getClientTemplate() != null) {
        String clientTemplateName = KeycloakModelUtils.convertClientScopeName(resourceRep.getClientTemplate());
        addClientScopeToClient(realm, client, clientTemplateName, true);
    }
    if (resourceRep.getDefaultClientScopes() != null || resourceRep.getOptionalClientScopes() != null) {
        // First remove all default/built in client scopes
        for (ClientScopeModel clientScope : client.getClientScopes(true).values()) {
            client.removeClientScope(clientScope);
        }
        // First remove all default/built in client scopes
        for (ClientScopeModel clientScope : client.getClientScopes(false).values()) {
            client.removeClientScope(clientScope);
        }
    }
    if (resourceRep.getDefaultClientScopes() != null) {
        for (String clientScopeName : resourceRep.getDefaultClientScopes()) {
            addClientScopeToClient(realm, client, clientScopeName, true);
        }
    }
    if (resourceRep.getOptionalClientScopes() != null) {
        for (String clientScopeName : resourceRep.getOptionalClientScopes()) {
            addClientScopeToClient(realm, client, clientScopeName, false);
        }
    }
    if (resourceRep.isFullScopeAllowed() != null) {
        client.setFullScopeAllowed(resourceRep.isFullScopeAllowed());
    } else {
        client.setFullScopeAllowed(!client.isConsentRequired());
    }
    client.updateClient();
    resourceRep.setId(client.getId());
    return client;
}
Also used : ClientModel(org.keycloak.models.ClientModel) ProtocolMapperRepresentation(org.keycloak.representations.idm.ProtocolMapperRepresentation) ClientScopeModel(org.keycloak.models.ClientScopeModel) ArtifactBindingUtils.computeArtifactBindingIdentifierString(org.keycloak.protocol.saml.util.ArtifactBindingUtils.computeArtifactBindingIdentifierString) Map(java.util.Map) MultivaluedHashMap(org.keycloak.common.util.MultivaluedHashMap) HashMap(java.util.HashMap) HashSet(java.util.HashSet)

Example 34 with ProtocolMapperRepresentation

use of org.keycloak.representations.idm.ProtocolMapperRepresentation in project keycloak by keycloak.

the class ClientTest method updateClientWithProtocolMapper.

@Test
@AuthServerContainerExclude(AuthServer.REMOTE)
public void updateClientWithProtocolMapper() {
    ClientRepresentation rep = new ClientRepresentation();
    rep.setClientId("my-app");
    ProtocolMapperRepresentation fooMapper = new ProtocolMapperRepresentation();
    fooMapper.setName("foo");
    fooMapper.setProtocol("openid-connect");
    fooMapper.setProtocolMapper("oidc-hardcoded-claim-mapper");
    rep.setProtocolMappers(Collections.singletonList(fooMapper));
    Response response = realm.clients().create(rep);
    response.close();
    String id = ApiUtil.getCreatedId(response);
    getCleanup().addClientUuid(id);
    ClientResource clientResource = realm.clients().get(id);
    assertNotNull(clientResource);
    ClientRepresentation client = clientResource.toRepresentation();
    List<ProtocolMapperRepresentation> protocolMappers = client.getProtocolMappers();
    assertEquals(1, protocolMappers.size());
    ProtocolMapperRepresentation mapper = protocolMappers.get(0);
    assertEquals("foo", mapper.getName());
    ClientRepresentation newClient = new ClientRepresentation();
    newClient.setId(client.getId());
    newClient.setClientId(client.getClientId());
    ProtocolMapperRepresentation barMapper = new ProtocolMapperRepresentation();
    barMapper.setName("bar");
    barMapper.setProtocol("openid-connect");
    barMapper.setProtocolMapper("oidc-hardcoded-role-mapper");
    protocolMappers.add(barMapper);
    newClient.setProtocolMappers(protocolMappers);
    realm.clients().get(client.getId()).update(newClient);
    ClientRepresentation storedClient = realm.clients().get(client.getId()).toRepresentation();
    assertClient(client, storedClient);
}
Also used : AccessTokenResponse(org.keycloak.testsuite.util.OAuthClient.AccessTokenResponse) Response(javax.ws.rs.core.Response) ProtocolMapperRepresentation(org.keycloak.representations.idm.ProtocolMapperRepresentation) ClientResource(org.keycloak.admin.client.resource.ClientResource) ClientRepresentation(org.keycloak.representations.idm.ClientRepresentation) AuthServerContainerExclude(org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude) Test(org.junit.Test)

Example 35 with ProtocolMapperRepresentation

use of org.keycloak.representations.idm.ProtocolMapperRepresentation in project keycloak by keycloak.

the class PermissionsTest method clientScopes.

@Test
public void clientScopes() {
    invoke((RealmResource realm) -> {
        realm.clientScopes().findAll();
    }, Resource.CLIENT, false, true);
    invoke((RealmResource realm, AtomicReference<Response> response) -> {
        ClientScopeRepresentation scope = new ClientScopeRepresentation();
        scope.setName("scope");
        response.set(realm.clientScopes().create(scope));
    }, Resource.CLIENT, true);
    ClientScopeRepresentation scope = adminClient.realms().realm(REALM_NAME).clientScopes().findAll().get(0);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).toRepresentation();
    }, Resource.CLIENT, false);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).update(scope);
    }, Resource.CLIENT, true);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).remove();
        realm.clientScopes().create(scope);
    }, Resource.CLIENT, true);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getProtocolMappers().getMappers();
    }, Resource.CLIENT, false, true);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getProtocolMappers().getMappersPerProtocol("nosuch");
    }, Resource.CLIENT, false, true);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getProtocolMappers().getMapperById("nosuch");
    }, Resource.CLIENT, false, true);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getProtocolMappers().update("nosuch", new ProtocolMapperRepresentation());
    }, Resource.CLIENT, true);
    invoke((RealmResource realm, AtomicReference<Response> response) -> {
        response.set(realm.clientScopes().get(scope.getId()).getProtocolMappers().createMapper(new ProtocolMapperRepresentation()));
    }, Resource.CLIENT, true);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getProtocolMappers().createMapper(Collections.<ProtocolMapperRepresentation>emptyList());
    }, Resource.CLIENT, true);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getProtocolMappers().delete("nosuch");
    }, Resource.CLIENT, true);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getScopeMappings().getAll();
    }, Resource.CLIENT, false);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getScopeMappings().realmLevel().listAll();
    }, Resource.CLIENT, false);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getScopeMappings().realmLevel().listAvailable();
    }, Resource.CLIENT, false);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getScopeMappings().realmLevel().listEffective();
    }, Resource.CLIENT, false);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getScopeMappings().realmLevel().add(Collections.<RoleRepresentation>emptyList());
    }, Resource.CLIENT, true);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getScopeMappings().realmLevel().remove(Collections.<RoleRepresentation>emptyList());
    }, Resource.CLIENT, true);
    ClientRepresentation realmAccessClient = adminClient.realms().realm(REALM_NAME).clients().findByClientId(Constants.REALM_MANAGEMENT_CLIENT_ID).get(0);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getScopeMappings().clientLevel(realmAccessClient.getId()).listAll();
    }, Resource.CLIENT, false);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getScopeMappings().clientLevel(realmAccessClient.getId()).listAvailable();
    }, Resource.CLIENT, false);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getScopeMappings().clientLevel(realmAccessClient.getId()).listEffective();
    }, Resource.CLIENT, false);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getScopeMappings().clientLevel(realmAccessClient.getId()).add(Collections.<RoleRepresentation>emptyList());
    }, Resource.CLIENT, true);
    invoke((RealmResource realm) -> {
        realm.clientScopes().get(scope.getId()).getScopeMappings().clientLevel(realmAccessClient.getId()).remove(Collections.<RoleRepresentation>emptyList());
    }, Resource.CLIENT, true);
    // this should throw forbidden as "query-users" role isn't enough
    invoke(new Invocation() {

        public void invoke(RealmResource realm) {
            clients.get(AdminRoles.QUERY_USERS).realm(REALM_NAME).clientScopes().findAll();
        }
    }, clients.get(AdminRoles.QUERY_USERS), false);
}
Also used : RealmResource(org.keycloak.admin.client.resource.RealmResource) ProtocolMapperRepresentation(org.keycloak.representations.idm.ProtocolMapperRepresentation) ClientScopeRepresentation(org.keycloak.representations.idm.ClientScopeRepresentation) AtomicReference(java.util.concurrent.atomic.AtomicReference) ClientRepresentation(org.keycloak.representations.idm.ClientRepresentation) AbstractKeycloakTest(org.keycloak.testsuite.AbstractKeycloakTest) Test(org.junit.Test)

Aggregations

ProtocolMapperRepresentation (org.keycloak.representations.idm.ProtocolMapperRepresentation)107 Test (org.junit.Test)68 HashMap (java.util.HashMap)30 Response (javax.ws.rs.core.Response)30 ClientRepresentation (org.keycloak.representations.idm.ClientRepresentation)27 Map (java.util.Map)23 AbstractKeycloakTest (org.keycloak.testsuite.AbstractKeycloakTest)20 ClientResource (org.keycloak.admin.client.resource.ClientResource)19 OAuthClient (org.keycloak.testsuite.util.OAuthClient)17 RealmResource (org.keycloak.admin.client.resource.RealmResource)14 List (java.util.List)13 ProtocolMappersResource (org.keycloak.admin.client.resource.ProtocolMappersResource)12 IDToken (org.keycloak.representations.IDToken)12 Matchers.isEmptyOrNullString (org.hamcrest.Matchers.isEmptyOrNullString)11 ClientScopeRepresentation (org.keycloak.representations.idm.ClientScopeRepresentation)11 AuthServerContainerExclude (org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude)10 UserRepresentation (org.keycloak.representations.idm.UserRepresentation)8 ArrayList (java.util.ArrayList)7 LinkedList (java.util.LinkedList)7 AccessToken (org.keycloak.representations.AccessToken)7