Java Code Examples for org.keycloak.representations.idm.ClientRepresentation#setProtocolMappers()
The following examples show how to use
org.keycloak.representations.idm.ClientRepresentation#setProtocolMappers() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: OpenShiftTokenReviewEndpointTest.java From keycloak with Apache License 2.0 | 6 votes |
@Override public void configureTestRealm(RealmRepresentation testRealm) { ClientRepresentation client = testRealm.getClients().stream().filter(r -> r.getClientId().equals("test-app")).findFirst().get(); List<ProtocolMapperRepresentation> mappers = new LinkedList<>(); ProtocolMapperRepresentation mapper = new ProtocolMapperRepresentation(); mapper.setName("groups"); mapper.setProtocolMapper(GroupMembershipMapper.PROVIDER_ID); mapper.setProtocol(OIDCLoginProtocol.LOGIN_PROTOCOL); Map<String, String> config = new HashMap<>(); config.put("full.path", "false"); config.put(OIDCAttributeMapperHelper.TOKEN_CLAIM_NAME, "groups"); config.put(OIDCAttributeMapperHelper.INCLUDE_IN_ACCESS_TOKEN, "true"); config.put(OIDCAttributeMapperHelper.INCLUDE_IN_ID_TOKEN, "true"); mapper.setConfig(config); mappers.add(mapper); client.setProtocolMappers(mappers); client.setPublicClient(false); client.setClientAuthenticatorType("testsuite-client-dummy"); testRealm.getUsers().add(UserBuilder.create().username("groups-user").password("password").addGroups("/topGroup", "/topGroup/level2group").build()); }
Example 2
Source File: ClientRegistrationPoliciesTest.java From keycloak with Apache License 2.0 | 6 votes |
@Test @AuthServerContainerExclude(AuthServer.REMOTE) // We would need to do domain name -> ip address to set trusted host public void testProtocolMappersRemoveBuiltins() throws Exception { setTrustedHost("localhost"); // Change policy to allow hardcoded mapper ComponentRepresentation protocolMapperPolicyRep = findPolicyByProviderAndAuth(ProtocolMappersClientRegistrationPolicyFactory.PROVIDER_ID, getPolicyAnon()); protocolMapperPolicyRep.getConfig().add(ProtocolMappersClientRegistrationPolicyFactory.ALLOWED_PROTOCOL_MAPPER_TYPES, HardcodedRole.PROVIDER_ID); realmResource().components().component(protocolMapperPolicyRep.getId()).update(protocolMapperPolicyRep); // Create client with hardcoded mapper ClientRepresentation clientRep = createRep("test-app"); clientRep.setProtocolMappers(Collections.singletonList(createHardcodedMapperRep())); ClientRepresentation registeredClient = reg.create(clientRep); Assert.assertEquals(1, registeredClient.getProtocolMappers().size()); ProtocolMapperRepresentation hardcodedMapper = registeredClient.getProtocolMappers().get(0); // Revert ApiUtil.findClientResourceByClientId(realmResource(), "test-app").remove(); protocolMapperPolicyRep.getConfig().remove(ProtocolMappersClientRegistrationPolicyFactory.ALLOWED_PROTOCOL_MAPPER_TYPES, HardcodedRole.PROVIDER_ID); realmResource().components().component(protocolMapperPolicyRep.getId()).update(protocolMapperPolicyRep); }
Example 3
Source File: ClientRegistrationPoliciesTest.java From keycloak with Apache License 2.0 | 5 votes |
@Test @AuthServerContainerExclude(AuthServer.REMOTE) // We would need to do domain name -> ip address to set trusted host public void testProtocolMappersCreate() throws Exception { setTrustedHost("localhost"); // Try to add client with some "hardcoded role" mapper. Should fail ClientRepresentation clientRep = createRep("test-app"); clientRep.setProtocolMappers(Collections.singletonList(createHardcodedMapperRep())); assertFail(ClientRegOp.CREATE, clientRep, 403, "ProtocolMapper type not allowed"); // Try the same authenticated. Should still fail. ClientInitialAccessPresentation token = adminClient.realm(REALM_NAME).clientInitialAccess().create(new ClientInitialAccessCreatePresentation(0, 10)); reg.auth(Auth.token(token)); assertFail(ClientRegOp.CREATE, clientRep, 403, "ProtocolMapper type not allowed"); // Update the "authenticated" policy and allow hardcoded role mapper ComponentRepresentation protocolMapperPolicyRep = findPolicyByProviderAndAuth(ProtocolMappersClientRegistrationPolicyFactory.PROVIDER_ID, getPolicyAuth()); protocolMapperPolicyRep.getConfig().add(ProtocolMappersClientRegistrationPolicyFactory.ALLOWED_PROTOCOL_MAPPER_TYPES, HardcodedRole.PROVIDER_ID); realmResource().components().component(protocolMapperPolicyRep.getId()).update(protocolMapperPolicyRep); // Check authenticated registration is permitted ClientRepresentation registeredClient = reg.create(clientRep); Assert.assertNotNull(registeredClient.getRegistrationAccessToken()); // Check "anonymous" registration still fails clientRep = createRep("test-app-2"); clientRep.setProtocolMappers(Collections.singletonList(createHardcodedMapperRep())); reg.auth(null); assertFail(ClientRegOp.CREATE, clientRep, 403, "ProtocolMapper type not allowed"); // Revert policy change ApiUtil.findClientResourceByClientId(realmResource(), "test-app").remove(); protocolMapperPolicyRep.getConfig().remove(ProtocolMappersClientRegistrationPolicyFactory.ALLOWED_PROTOCOL_MAPPER_TYPES, HardcodedRole.PROVIDER_ID); realmResource().components().component(protocolMapperPolicyRep.getId()).update(protocolMapperPolicyRep); }
Example 4
Source File: ClientRegistrationPoliciesTest.java From keycloak with Apache License 2.0 | 5 votes |
@Test @AuthServerContainerExclude(AuthServer.REMOTE) // We would need to do domain name -> ip address to set trusted host public void testProtocolMappersUpdate() throws Exception { setTrustedHost("localhost"); // Check I can add client with allowed protocolMappers ProtocolMapperRepresentation protocolMapper = new ProtocolMapperRepresentation(); protocolMapper.setName("Full name"); protocolMapper.setProtocolMapper(FullNameMapper.PROVIDER_ID); protocolMapper.setProtocol(OIDCLoginProtocol.LOGIN_PROTOCOL); ClientRepresentation clientRep = createRep("test-app"); clientRep.setProtocolMappers(Collections.singletonList(protocolMapper)); ClientRepresentation registeredClient = reg.create(clientRep); reg.auth(Auth.token(registeredClient)); // Add some disallowed protocolMapper registeredClient.getProtocolMappers().add(createHardcodedMapperRep()); // Check I can't update client because of protocolMapper assertFail(ClientRegOp.UPDATE, registeredClient, 403, "ProtocolMapper type not allowed"); // Remove "bad" protocolMapper registeredClient.getProtocolMappers().removeIf((ProtocolMapperRepresentation mapper) -> { return mapper.getProtocolMapper().equals(HardcodedRole.PROVIDER_ID); }); // Check I can update client now reg.update(registeredClient); // Revert client ApiUtil.findClientResourceByClientId(realmResource(), "test-app").remove(); }
Example 5
Source File: ClientRegistrationTest.java From keycloak with Apache License 2.0 | 5 votes |
@Test public void removeClientProtcolMappers() throws ClientRegistrationException { authManageClients(); ClientRepresentation initialClient = buildClient(); addProtocolMapper(initialClient, "mapperA"); registerClient(initialClient); ClientRepresentation client = reg.get(CLIENT_ID); client.setProtocolMappers(new ArrayList<>()); reg.update(client); ClientRepresentation updatedClient = reg.get(CLIENT_ID); assertThat("Removing protocolMapper failed", updatedClient.getProtocolMappers(), nullValue()); }
Example 6
Source File: ClientRegistrationTest.java From keycloak with Apache License 2.0 | 5 votes |
private void addProtocolMapper(ClientRepresentation client, String mapperName) { ProtocolMapperRepresentation mapper = new ProtocolMapperRepresentation(); mapper.setName(mapperName); mapper.setProtocol("openid-connect"); mapper.setProtocolMapper("oidc-usermodel-attribute-mapper"); mapper.getConfig().put("userinfo.token.claim", "true"); mapper.getConfig().put("user.attribute", "someAttribute"); mapper.getConfig().put("id.token.claim", "true"); mapper.getConfig().put("access.token.claim", "true"); mapper.getConfig().put("claim.name", "someClaimName"); mapper.getConfig().put("jsonType.label", "long"); client.setProtocolMappers(new ArrayList<>()); client.getProtocolMappers().add(mapper); }
Example 7
Source File: OIDCClientRegistrationProvider.java From keycloak with Apache License 2.0 | 5 votes |
private void updateClientRepWithProtocolMappers(ClientModel clientModel, ClientRepresentation rep) { List<ProtocolMapperRepresentation> mappings = new LinkedList<>(); for (ProtocolMapperModel model : clientModel.getProtocolMappers()) { mappings.add(ModelToRepresentation.toRepresentation(model)); } rep.setProtocolMappers(mappings); }
Example 8
Source File: ClientTest.java From keycloak with Apache License 2.0 | 4 votes |
@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); }
Example 9
Source File: KcOidcBrokerConfiguration.java From keycloak with Apache License 2.0 | 4 votes |
@Override public List<ClientRepresentation> createProviderClients() { ClientRepresentation client = new ClientRepresentation(); client.setId(CLIENT_ID); client.setClientId(getIDPClientIdInProviderRealm()); client.setName(CLIENT_ID); client.setSecret(CLIENT_SECRET); client.setEnabled(true); client.setRedirectUris(Collections.singletonList(getConsumerRoot() + "/auth/realms/" + REALM_CONS_NAME + "/broker/" + IDP_OIDC_ALIAS + "/endpoint/*")); client.setAdminUrl(getConsumerRoot() + "/auth/realms/" + REALM_CONS_NAME + "/broker/" + IDP_OIDC_ALIAS + "/endpoint"); ProtocolMapperRepresentation emailMapper = new ProtocolMapperRepresentation(); emailMapper.setName("email"); emailMapper.setProtocol(OIDCLoginProtocol.LOGIN_PROTOCOL); emailMapper.setProtocolMapper(UserPropertyMapper.PROVIDER_ID); Map<String, String> emailMapperConfig = emailMapper.getConfig(); emailMapperConfig.put(ProtocolMapperUtils.USER_ATTRIBUTE, "email"); emailMapperConfig.put(OIDCAttributeMapperHelper.TOKEN_CLAIM_NAME, "email"); emailMapperConfig.put(OIDCAttributeMapperHelper.JSON_TYPE, ProviderConfigProperty.STRING_TYPE); emailMapperConfig.put(OIDCAttributeMapperHelper.INCLUDE_IN_ACCESS_TOKEN, "true"); emailMapperConfig.put(OIDCAttributeMapperHelper.INCLUDE_IN_ID_TOKEN, "true"); emailMapperConfig.put(OIDCAttributeMapperHelper.INCLUDE_IN_USERINFO, "true"); ProtocolMapperRepresentation nestedAttrMapper = new ProtocolMapperRepresentation(); nestedAttrMapper.setName("attribute - nested claim"); nestedAttrMapper.setProtocol(OIDCLoginProtocol.LOGIN_PROTOCOL); nestedAttrMapper.setProtocolMapper(UserAttributeMapper.PROVIDER_ID); Map<String, String> nestedEmailMapperConfig = nestedAttrMapper.getConfig(); nestedEmailMapperConfig.put(ProtocolMapperUtils.USER_ATTRIBUTE, "nested.email"); nestedEmailMapperConfig.put(OIDCAttributeMapperHelper.TOKEN_CLAIM_NAME, "nested.email"); nestedEmailMapperConfig.put(OIDCAttributeMapperHelper.JSON_TYPE, ProviderConfigProperty.STRING_TYPE); nestedEmailMapperConfig.put(OIDCAttributeMapperHelper.INCLUDE_IN_ACCESS_TOKEN, "true"); nestedEmailMapperConfig.put(OIDCAttributeMapperHelper.INCLUDE_IN_ID_TOKEN, "true"); nestedEmailMapperConfig.put(OIDCAttributeMapperHelper.INCLUDE_IN_USERINFO, "true"); ProtocolMapperRepresentation dottedAttrMapper = new ProtocolMapperRepresentation(); dottedAttrMapper.setName("attribute - claim with dot in name"); dottedAttrMapper.setProtocol(OIDCLoginProtocol.LOGIN_PROTOCOL); dottedAttrMapper.setProtocolMapper(UserAttributeMapper.PROVIDER_ID); Map<String, String> dottedEmailMapperConfig = dottedAttrMapper.getConfig(); dottedEmailMapperConfig.put(ProtocolMapperUtils.USER_ATTRIBUTE, "dotted.email"); dottedEmailMapperConfig.put(OIDCAttributeMapperHelper.TOKEN_CLAIM_NAME, "dotted\\.email"); dottedEmailMapperConfig.put(OIDCAttributeMapperHelper.JSON_TYPE, ProviderConfigProperty.STRING_TYPE); dottedEmailMapperConfig.put(OIDCAttributeMapperHelper.INCLUDE_IN_ACCESS_TOKEN, "true"); dottedEmailMapperConfig.put(OIDCAttributeMapperHelper.INCLUDE_IN_ID_TOKEN, "true"); dottedEmailMapperConfig.put(OIDCAttributeMapperHelper.INCLUDE_IN_USERINFO, "true"); ProtocolMapperRepresentation userAttrMapper = new ProtocolMapperRepresentation(); userAttrMapper.setName("attribute - name"); userAttrMapper.setProtocol(OIDCLoginProtocol.LOGIN_PROTOCOL); userAttrMapper.setProtocolMapper(UserAttributeMapper.PROVIDER_ID); Map<String, String> userAttrMapperConfig = userAttrMapper.getConfig(); userAttrMapperConfig.put(ProtocolMapperUtils.USER_ATTRIBUTE, ATTRIBUTE_TO_MAP_NAME); userAttrMapperConfig.put(OIDCAttributeMapperHelper.TOKEN_CLAIM_NAME, ATTRIBUTE_TO_MAP_NAME); userAttrMapperConfig.put(OIDCAttributeMapperHelper.JSON_TYPE, ProviderConfigProperty.STRING_TYPE); userAttrMapperConfig.put(OIDCAttributeMapperHelper.INCLUDE_IN_ACCESS_TOKEN, "true"); userAttrMapperConfig.put(OIDCAttributeMapperHelper.INCLUDE_IN_ID_TOKEN, "true"); userAttrMapperConfig.put(OIDCAttributeMapperHelper.INCLUDE_IN_USERINFO, "true"); userAttrMapperConfig.put(ProtocolMapperUtils.MULTIVALUED, "true"); ProtocolMapperRepresentation userAttrMapper2 = new ProtocolMapperRepresentation(); userAttrMapper2.setName("attribute - name - 2"); userAttrMapper2.setProtocol(OIDCLoginProtocol.LOGIN_PROTOCOL); userAttrMapper2.setProtocolMapper(UserAttributeMapper.PROVIDER_ID); Map<String, String> userAttrMapperConfig2 = userAttrMapper2.getConfig(); userAttrMapperConfig2.put(ProtocolMapperUtils.USER_ATTRIBUTE, ATTRIBUTE_TO_MAP_NAME_2); userAttrMapperConfig2.put(OIDCAttributeMapperHelper.TOKEN_CLAIM_NAME, ATTRIBUTE_TO_MAP_NAME_2); userAttrMapperConfig2.put(OIDCAttributeMapperHelper.JSON_TYPE, ProviderConfigProperty.STRING_TYPE); userAttrMapperConfig2.put(OIDCAttributeMapperHelper.INCLUDE_IN_ACCESS_TOKEN, "true"); userAttrMapperConfig2.put(OIDCAttributeMapperHelper.INCLUDE_IN_ID_TOKEN, "true"); userAttrMapperConfig2.put(OIDCAttributeMapperHelper.INCLUDE_IN_USERINFO, "true"); userAttrMapperConfig2.put(ProtocolMapperUtils.MULTIVALUED, "true"); ProtocolMapperRepresentation hardcodedJsonClaim = new ProtocolMapperRepresentation(); hardcodedJsonClaim.setName("json-mapper"); hardcodedJsonClaim.setProtocol(OIDCLoginProtocol.LOGIN_PROTOCOL); hardcodedJsonClaim.setProtocolMapper(HardcodedClaim.PROVIDER_ID); Map<String, String> hardcodedJsonClaimMapperConfig = hardcodedJsonClaim.getConfig(); hardcodedJsonClaimMapperConfig.put(OIDCAttributeMapperHelper.TOKEN_CLAIM_NAME, KcOidcBrokerConfiguration.USER_INFO_CLAIM); hardcodedJsonClaimMapperConfig.put(OIDCAttributeMapperHelper.JSON_TYPE, "JSON"); hardcodedJsonClaimMapperConfig.put(OIDCAttributeMapperHelper.INCLUDE_IN_ID_TOKEN, "true"); hardcodedJsonClaimMapperConfig.put(HardcodedClaim.CLAIM_VALUE, "{\"" + HARDOCDED_CLAIM + "\": \"" + HARDOCDED_VALUE + "\"}"); client.setProtocolMappers(Arrays.asList(emailMapper, userAttrMapper, userAttrMapper2, nestedAttrMapper, dottedAttrMapper, hardcodedJsonClaim)); return Collections.singletonList(client); }
Example 10
Source File: KcSamlBrokerConfiguration.java From keycloak with Apache License 2.0 | 4 votes |
private ClientRepresentation createProviderClient(String clientId) { ClientRepresentation client = new ClientRepresentation(); client.setClientId(clientId); client.setEnabled(true); client.setProtocol(IDP_SAML_PROVIDER_ID); client.setRedirectUris(Collections.singletonList( getConsumerRoot() + "/auth/realms/" + REALM_CONS_NAME + "/broker/" + IDP_SAML_ALIAS + "/endpoint" )); Map<String, String> attributes = new HashMap<>(); attributes.put(SamlConfigAttributes.SAML_AUTHNSTATEMENT, "true"); attributes.put(SamlProtocol.SAML_SINGLE_LOGOUT_SERVICE_URL_POST_ATTRIBUTE, getConsumerRoot() + "/auth/realms/" + REALM_CONS_NAME + "/broker/" + IDP_SAML_ALIAS + "/endpoint"); attributes.put(SAML_ASSERTION_CONSUMER_URL_POST_ATTRIBUTE, getConsumerRoot() + "/auth/realms/" + REALM_CONS_NAME + "/broker/" + IDP_SAML_ALIAS + "/endpoint"); attributes.put(SamlConfigAttributes.SAML_FORCE_NAME_ID_FORMAT_ATTRIBUTE, "true"); attributes.put(SamlConfigAttributes.SAML_NAME_ID_FORMAT_ATTRIBUTE, "username"); attributes.put(SamlConfigAttributes.SAML_ASSERTION_SIGNATURE, "false"); attributes.put(SamlConfigAttributes.SAML_SERVER_SIGNATURE, "false"); attributes.put(SamlConfigAttributes.SAML_CLIENT_SIGNATURE_ATTRIBUTE, "false"); attributes.put(SamlConfigAttributes.SAML_ENCRYPT, "false"); client.setAttributes(attributes); ProtocolMapperRepresentation emailMapper = new ProtocolMapperRepresentation(); emailMapper.setName("email"); emailMapper.setProtocol(SamlProtocol.LOGIN_PROTOCOL); emailMapper.setProtocolMapper(UserPropertyAttributeStatementMapper.PROVIDER_ID); Map<String, String> emailMapperConfig = emailMapper.getConfig(); emailMapperConfig.put(ProtocolMapperUtils.USER_ATTRIBUTE, "email"); emailMapperConfig.put(AttributeStatementHelper.SAML_ATTRIBUTE_NAME, "urn:oid:1.2.840.113549.1.9.1"); emailMapperConfig.put(AttributeStatementHelper.SAML_ATTRIBUTE_NAMEFORMAT, "urn:oasis:names:tc:SAML:2.0:attrname-format:uri"); emailMapperConfig.put(AttributeStatementHelper.FRIENDLY_NAME, "email"); ProtocolMapperRepresentation dottedAttrMapper = new ProtocolMapperRepresentation(); dottedAttrMapper.setName("email - dotted"); dottedAttrMapper.setProtocol(SamlProtocol.LOGIN_PROTOCOL); dottedAttrMapper.setProtocolMapper(UserAttributeStatementMapper.PROVIDER_ID); Map<String, String> dottedEmailMapperConfig = dottedAttrMapper.getConfig(); dottedEmailMapperConfig.put(ProtocolMapperUtils.USER_ATTRIBUTE, "dotted.email"); dottedEmailMapperConfig.put(AttributeStatementHelper.SAML_ATTRIBUTE_NAME, "dotted.email"); dottedEmailMapperConfig.put(AttributeStatementHelper.SAML_ATTRIBUTE_NAMEFORMAT, "urn:oasis:names:tc:SAML:2.0:attrname-format:uri"); ProtocolMapperRepresentation nestedAttrMapper = new ProtocolMapperRepresentation(); nestedAttrMapper.setName("email - nested"); nestedAttrMapper.setProtocol(SamlProtocol.LOGIN_PROTOCOL); nestedAttrMapper.setProtocolMapper(UserAttributeStatementMapper.PROVIDER_ID); Map<String, String> nestedEmailMapperConfig = nestedAttrMapper.getConfig(); nestedEmailMapperConfig.put(ProtocolMapperUtils.USER_ATTRIBUTE, "nested.email"); nestedEmailMapperConfig.put(AttributeStatementHelper.SAML_ATTRIBUTE_NAME, "nested.email"); nestedEmailMapperConfig.put(AttributeStatementHelper.SAML_ATTRIBUTE_NAMEFORMAT, "urn:oasis:names:tc:SAML:2.0:attrname-format:uri"); ProtocolMapperRepresentation userAttrMapper = new ProtocolMapperRepresentation(); userAttrMapper.setName("attribute - name"); userAttrMapper.setProtocol(SamlProtocol.LOGIN_PROTOCOL); userAttrMapper.setProtocolMapper(UserAttributeStatementMapper.PROVIDER_ID); Map<String, String> userAttrMapperConfig = userAttrMapper.getConfig(); userAttrMapperConfig.put(ProtocolMapperUtils.USER_ATTRIBUTE, KcOidcBrokerConfiguration.ATTRIBUTE_TO_MAP_NAME); userAttrMapperConfig.put(AttributeStatementHelper.SAML_ATTRIBUTE_NAME, KcOidcBrokerConfiguration.ATTRIBUTE_TO_MAP_NAME); userAttrMapperConfig.put(AttributeStatementHelper.SAML_ATTRIBUTE_NAMEFORMAT, AttributeStatementHelper.BASIC); userAttrMapperConfig.put(AttributeStatementHelper.FRIENDLY_NAME, ""); ProtocolMapperRepresentation userFriendlyAttrMapper = new ProtocolMapperRepresentation(); userFriendlyAttrMapper.setName("attribute - friendly name"); userFriendlyAttrMapper.setProtocol(SamlProtocol.LOGIN_PROTOCOL); userFriendlyAttrMapper.setProtocolMapper(UserAttributeStatementMapper.PROVIDER_ID); Map<String, String> userFriendlyAttrMapperConfig = userFriendlyAttrMapper.getConfig(); userFriendlyAttrMapperConfig.put(ProtocolMapperUtils.USER_ATTRIBUTE, AbstractUserAttributeMapperTest.ATTRIBUTE_TO_MAP_FRIENDLY_NAME); userFriendlyAttrMapperConfig.put(AttributeStatementHelper.SAML_ATTRIBUTE_NAME, "urn:oid:1.2.3.4.5.6.7"); userFriendlyAttrMapperConfig.put(AttributeStatementHelper.SAML_ATTRIBUTE_NAMEFORMAT, AttributeStatementHelper.BASIC); userFriendlyAttrMapperConfig.put(AttributeStatementHelper.FRIENDLY_NAME, AbstractUserAttributeMapperTest.ATTRIBUTE_TO_MAP_FRIENDLY_NAME); client.setProtocolMappers(Arrays.asList(emailMapper, dottedAttrMapper, nestedAttrMapper, userAttrMapper, userFriendlyAttrMapper)); return client; }