Java Code Examples for org.keycloak.representations.idm.GroupRepresentation#setAttributes()
The following examples show how to use
org.keycloak.representations.idm.GroupRepresentation#setAttributes() .
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: OIDCProtocolMappersTest.java From keycloak with Apache License 2.0 | 6 votes |
@Test public void testGroupAttributeUserOneGroupMultivalueNoAggregate() throws Exception { // get the user UserResource userResource = findUserByUsernameId(adminClient.realm("test"), "test-user@localhost"); UserRepresentation user = userResource.toRepresentation(); user.setAttributes(new HashMap<>()); user.getAttributes().put("group-value", Arrays.asList("user-value1", "user-value2")); userResource.update(user); // create a group1 with two values GroupRepresentation group1 = new GroupRepresentation(); group1.setName("group1"); group1.setAttributes(new HashMap<>()); group1.getAttributes().put("group-value", Arrays.asList("value1", "value2")); adminClient.realm("test").groups().add(group1); group1 = adminClient.realm("test").getGroupByPath("/group1"); userResource.joinGroup(group1.getId()); // create the attribute mapper ProtocolMappersResource protocolMappers = findClientResourceByClientId(adminClient.realm("test"), "test-app").getProtocolMappers(); protocolMappers.createMapper(createClaimMapper("group-value", "group-value", "group-value", "String", true, true, true, false)).close(); try { // test it OAuthClient.AccessTokenResponse response = browserLogin("password", "test-user@localhost", "password"); IDToken idToken = oauth.verifyIDToken(response.getIdToken()); assertNotNull(idToken.getOtherClaims()); assertNotNull(idToken.getOtherClaims().get("group-value")); assertTrue(idToken.getOtherClaims().get("group-value") instanceof List); assertEquals(2, ((List) idToken.getOtherClaims().get("group-value")).size()); assertTrue(((List) idToken.getOtherClaims().get("group-value")).contains("user-value1")); assertTrue(((List) idToken.getOtherClaims().get("group-value")).contains("user-value2")); } finally { // revert user.getAttributes().remove("group-value"); userResource.update(user); userResource.leaveGroup(group1.getId()); adminClient.realm("test").groups().group(group1.getId()).remove(); deleteMappers(protocolMappers); } }
Example 2
Source File: OIDCProtocolMappersTest.java From keycloak with Apache License 2.0 | 5 votes |
@Test public void testGroupAttributeUserOneGroupNoMultivalueNoAggregate() throws Exception { // get the user UserResource userResource = findUserByUsernameId(adminClient.realm("test"), "test-user@localhost"); UserRepresentation user = userResource.toRepresentation(); user.setAttributes(new HashMap<>()); user.getAttributes().put("group-value", Arrays.asList("user-value1", "user-value2")); userResource.update(user); // create a group1 with two values GroupRepresentation group1 = new GroupRepresentation(); group1.setName("group1"); group1.setAttributes(new HashMap<>()); group1.getAttributes().put("group-value", Arrays.asList("value1", "value2")); adminClient.realm("test").groups().add(group1); group1 = adminClient.realm("test").getGroupByPath("/group1"); userResource.joinGroup(group1.getId()); // create the attribute mapper ProtocolMappersResource protocolMappers = findClientResourceByClientId(adminClient.realm("test"), "test-app").getProtocolMappers(); protocolMappers.createMapper(createClaimMapper("group-value", "group-value", "group-value", "String", true, true, false, false)).close(); try { // test it OAuthClient.AccessTokenResponse response = browserLogin("password", "test-user@localhost", "password"); IDToken idToken = oauth.verifyIDToken(response.getIdToken()); assertNotNull(idToken.getOtherClaims()); assertNotNull(idToken.getOtherClaims().get("group-value")); assertTrue(idToken.getOtherClaims().get("group-value") instanceof String); assertTrue("user-value1".equals(idToken.getOtherClaims().get("group-value")) || "user-value2".equals(idToken.getOtherClaims().get("group-value"))); } finally { // revert user.getAttributes().remove("group-value"); userResource.update(user); userResource.leaveGroup(group1.getId()); adminClient.realm("test").groups().group(group1.getId()).remove(); deleteMappers(protocolMappers); } }
Example 3
Source File: OIDCProtocolMappersTest.java From keycloak with Apache License 2.0 | 5 votes |
@Test public void testGroupAttributeOneGroupNoMultivalueNoAggregate() throws Exception { // get the user UserResource userResource = findUserByUsernameId(adminClient.realm("test"), "test-user@localhost"); // create a group1 with two values GroupRepresentation group1 = new GroupRepresentation(); group1.setName("group1"); group1.setAttributes(new HashMap<>()); group1.getAttributes().put("group-value", Arrays.asList("value1", "value2")); adminClient.realm("test").groups().add(group1); group1 = adminClient.realm("test").getGroupByPath("/group1"); userResource.joinGroup(group1.getId()); // create the attribute mapper ProtocolMappersResource protocolMappers = findClientResourceByClientId(adminClient.realm("test"), "test-app").getProtocolMappers(); protocolMappers.createMapper(createClaimMapper("group-value", "group-value", "group-value", "String", true, true, false, false)).close(); try { // test it OAuthClient.AccessTokenResponse response = browserLogin("password", "test-user@localhost", "password"); IDToken idToken = oauth.verifyIDToken(response.getIdToken()); assertNotNull(idToken.getOtherClaims()); assertNotNull(idToken.getOtherClaims().get("group-value")); assertTrue(idToken.getOtherClaims().get("group-value") instanceof String); assertTrue("value1".equals(idToken.getOtherClaims().get("group-value")) || "value2".equals(idToken.getOtherClaims().get("group-value"))); } finally { // revert userResource.leaveGroup(group1.getId()); adminClient.realm("test").groups().group(group1.getId()).remove(); deleteMappers(protocolMappers); } }
Example 4
Source File: OIDCProtocolMappersTest.java From keycloak with Apache License 2.0 | 5 votes |
@Test public void testGroupAttributeOneGroupMultiValueNoAggregate() throws Exception { // get the user UserResource userResource = findUserByUsernameId(adminClient.realm("test"), "test-user@localhost"); // create a group1 with two values GroupRepresentation group1 = new GroupRepresentation(); group1.setName("group1"); group1.setAttributes(new HashMap<>()); group1.getAttributes().put("group-value", Arrays.asList("value1", "value2")); adminClient.realm("test").groups().add(group1); group1 = adminClient.realm("test").getGroupByPath("/group1"); userResource.joinGroup(group1.getId()); // create the attribute mapper ProtocolMappersResource protocolMappers = findClientResourceByClientId(adminClient.realm("test"), "test-app").getProtocolMappers(); protocolMappers.createMapper(createClaimMapper("group-value", "group-value", "group-value", "String", true, true, true, false)).close(); try { // test it OAuthClient.AccessTokenResponse response = browserLogin("password", "test-user@localhost", "password"); IDToken idToken = oauth.verifyIDToken(response.getIdToken()); assertNotNull(idToken.getOtherClaims()); assertNotNull(idToken.getOtherClaims().get("group-value")); assertTrue(idToken.getOtherClaims().get("group-value") instanceof List); assertEquals(2, ((List) idToken.getOtherClaims().get("group-value")).size()); assertTrue(((List) idToken.getOtherClaims().get("group-value")).contains("value1")); assertTrue(((List) idToken.getOtherClaims().get("group-value")).contains("value2")); } finally { // revert userResource.leaveGroup(group1.getId()); adminClient.realm("test").groups().group(group1.getId()).remove(); deleteMappers(protocolMappers); } }
Example 5
Source File: OIDCProtocolMappersTest.java From keycloak with Apache License 2.0 | 5 votes |
@Test public void testGroupAttributeOneGroupMultiValueAggregate() throws Exception { // get the user UserResource userResource = findUserByUsernameId(adminClient.realm("test"), "test-user@localhost"); // create a group1 with two values GroupRepresentation group1 = new GroupRepresentation(); group1.setName("group1"); group1.setAttributes(new HashMap<>()); group1.getAttributes().put("group-value", Arrays.asList("value1", "value2")); adminClient.realm("test").groups().add(group1); group1 = adminClient.realm("test").getGroupByPath("/group1"); userResource.joinGroup(group1.getId()); // create the attribute mapper ProtocolMappersResource protocolMappers = findClientResourceByClientId(adminClient.realm("test"), "test-app").getProtocolMappers(); protocolMappers.createMapper(createClaimMapper("group-value", "group-value", "group-value", "String", true, true, true, true)).close(); try { // test it OAuthClient.AccessTokenResponse response = browserLogin("password", "test-user@localhost", "password"); IDToken idToken = oauth.verifyIDToken(response.getIdToken()); assertNotNull(idToken.getOtherClaims()); assertNotNull(idToken.getOtherClaims().get("group-value")); assertTrue(idToken.getOtherClaims().get("group-value") instanceof List); assertEquals(2, ((List) idToken.getOtherClaims().get("group-value")).size()); assertTrue(((List) idToken.getOtherClaims().get("group-value")).contains("value1")); assertTrue(((List) idToken.getOtherClaims().get("group-value")).contains("value2")); } finally { // revert userResource.leaveGroup(group1.getId()); adminClient.realm("test").groups().group(group1.getId()).remove(); deleteMappers(protocolMappers); } }
Example 6
Source File: SAMLServletAdapterTest.java From keycloak with Apache License 2.0 | 5 votes |
@Test public void testUserAttributeStatementMapperUserGroupsAggregate() throws Exception { GroupRepresentation group1 = new GroupRepresentation(); group1.setName("group1"); group1.setAttributes(new HashMap<>()); group1.getAttributes().put("group-value", Arrays.asList("value1", "value2")); ClientResource clientResource = ApiUtil.findClientResourceByClientId(testRealmResource(), AbstractSamlTest.SAML_CLIENT_ID_EMPLOYEE_2); ProtocolMappersResource protocolMappersResource = clientResource.getProtocolMappers(); Map<String, String> config = new LinkedHashMap<>(); config.put("attribute.nameformat", "Basic"); config.put("user.attribute", "group-value"); config.put("attribute.name", "group-attribute"); config.put("aggregate.attrs", "true"); try ( AutoCloseable g1 = Creator.create(testRealmResource(), group1); AutoCloseable uau = UserAttributeUpdater.forUserByUsername(testRealmResource(), "bburke") .setAttribute("group-value", "user-value1") .setGroups("/group1") .update(); AutoCloseable c = createProtocolMapper(protocolMappersResource, "group-value", "saml", "saml-user-attribute-mapper", config)) { employee2ServletPage.navigateTo(); assertCurrentUrlStartsWith(testRealmSAMLPostLoginPage); testRealmSAMLPostLoginPage.form().login("bburke", "password"); driver.navigate().to(employee2ServletPage.getUriBuilder().clone().path("getAttributes").build().toURL()); waitForPageToLoad(); String body = driver.findElement(By.xpath("//body")).getText(); String[] values = parseCommaSeparatedAttributes(body, "group-attribute"); assertThat(values, arrayContainingInAnyOrder("user-value1", "value1", "value2")); employee2ServletPage.logout(); checkLoggedOut(employee2ServletPage, testRealmSAMLPostLoginPage); } }
Example 7
Source File: SAMLServletAdapterTest.java From keycloak with Apache License 2.0 | 5 votes |
@Test public void testUserAttributeStatementMapperUserGroupsNoAggregate() throws Exception { GroupRepresentation group1 = new GroupRepresentation(); group1.setName("group1"); group1.setAttributes(new HashMap<>()); group1.getAttributes().put("group-value", Arrays.asList("value1", "value2")); ClientResource clientResource = ApiUtil.findClientResourceByClientId(testRealmResource(), AbstractSamlTest.SAML_CLIENT_ID_EMPLOYEE_2); ProtocolMappersResource protocolMappersResource = clientResource.getProtocolMappers(); Map<String, String> config = new LinkedHashMap<>(); config.put("attribute.nameformat", "Basic"); config.put("user.attribute", "group-value"); config.put("attribute.name", "group-attribute"); try ( AutoCloseable g1 = Creator.create(testRealmResource(), group1); AutoCloseable uau = UserAttributeUpdater.forUserByUsername(testRealmResource(), "bburke") .setAttribute("group-value", "user-value1") .setGroups("/group1") .update(); AutoCloseable c = createProtocolMapper(protocolMappersResource, "group-value", "saml", "saml-user-attribute-mapper", config)) { employee2ServletPage.navigateTo(); assertCurrentUrlStartsWith(testRealmSAMLPostLoginPage); testRealmSAMLPostLoginPage.form().login("bburke", "password"); driver.navigate().to(employee2ServletPage.getUriBuilder().clone().path("getAttributes").build().toURL()); waitForPageToLoad(); String body = driver.findElement(By.xpath("//body")).getText(); String[] values = parseCommaSeparatedAttributes(body, "group-attribute"); assertThat(values, arrayContaining("user-value1")); employee2ServletPage.logout(); checkLoggedOut(employee2ServletPage, testRealmSAMLPostLoginPage); } }
Example 8
Source File: GroupInvalidationClusterTest.java From keycloak with Apache License 2.0 | 5 votes |
@Override protected GroupRepresentation createTestEntityRepresentation() { GroupRepresentation group = new GroupRepresentation(); group.setName("group_" + RandomStringUtils.randomAlphabetic(5)); group.setAttributes(new HashMap<String, List<String>>()); group.getAttributes().put("attr1", Arrays.asList(new String[]{"attr1 value"})); group.getAttributes().put("attr2", Arrays.asList(new String[]{"attr2 value", "attr2 value2"})); return group; }
Example 9
Source File: OIDCProtocolMappersTest.java From keycloak with Apache License 2.0 | 4 votes |
@Test public void testGroupAttributeUserOneGroupMultivalueAggregate() throws Exception { // get the user UserResource userResource = findUserByUsernameId(adminClient.realm("test"), "test-user@localhost"); UserRepresentation user = userResource.toRepresentation(); user.setAttributes(new HashMap<>()); user.getAttributes().put("group-value", Arrays.asList("user-value1", "user-value2")); userResource.update(user); // create a group1 with two values GroupRepresentation group1 = new GroupRepresentation(); group1.setName("group1"); group1.setAttributes(new HashMap<>()); group1.getAttributes().put("group-value", Arrays.asList("value1", "value2")); adminClient.realm("test").groups().add(group1); group1 = adminClient.realm("test").getGroupByPath("/group1"); userResource.joinGroup(group1.getId()); // create the attribute mapper ProtocolMappersResource protocolMappers = findClientResourceByClientId(adminClient.realm("test"), "test-app").getProtocolMappers(); protocolMappers.createMapper(createClaimMapper("group-value", "group-value", "group-value", "String", true, true, true, true)).close(); try { // test it OAuthClient.AccessTokenResponse response = browserLogin("password", "test-user@localhost", "password"); IDToken idToken = oauth.verifyIDToken(response.getIdToken()); assertNotNull(idToken.getOtherClaims()); assertNotNull(idToken.getOtherClaims().get("group-value")); assertTrue(idToken.getOtherClaims().get("group-value") instanceof List); assertEquals(4, ((List) idToken.getOtherClaims().get("group-value")).size()); assertTrue(((List) idToken.getOtherClaims().get("group-value")).contains("user-value1")); assertTrue(((List) idToken.getOtherClaims().get("group-value")).contains("user-value2")); assertTrue(((List) idToken.getOtherClaims().get("group-value")).contains("value1")); assertTrue(((List) idToken.getOtherClaims().get("group-value")).contains("value2")); } finally { // revert user.getAttributes().remove("group-value"); userResource.update(user); userResource.leaveGroup(group1.getId()); adminClient.realm("test").groups().group(group1.getId()).remove(); deleteMappers(protocolMappers); } }
Example 10
Source File: OIDCProtocolMappersTest.java From keycloak with Apache License 2.0 | 4 votes |
@Test public void testGroupAttributeTwoGroupNoMultivalueNoAggregate() throws Exception { // get the user UserResource userResource = findUserByUsernameId(adminClient.realm("test"), "test-user@localhost"); // create two groups with two values (one is the same value) GroupRepresentation group1 = new GroupRepresentation(); group1.setName("group1"); group1.setAttributes(new HashMap<>()); group1.getAttributes().put("group-value", Arrays.asList("value1", "value2")); adminClient.realm("test").groups().add(group1); group1 = adminClient.realm("test").getGroupByPath("/group1"); userResource.joinGroup(group1.getId()); GroupRepresentation group2 = new GroupRepresentation(); group2.setName("group2"); group2.setAttributes(new HashMap<>()); group2.getAttributes().put("group-value", Arrays.asList("value2", "value3")); adminClient.realm("test").groups().add(group2); group2 = adminClient.realm("test").getGroupByPath("/group2"); userResource.joinGroup(group2.getId()); // create the attribute mapper ProtocolMappersResource protocolMappers = findClientResourceByClientId(adminClient.realm("test"), "test-app").getProtocolMappers(); protocolMappers.createMapper(createClaimMapper("group-value", "group-value", "group-value", "String", true, true, false, false)).close(); try { // test it OAuthClient.AccessTokenResponse response = browserLogin("password", "test-user@localhost", "password"); IDToken idToken = oauth.verifyIDToken(response.getIdToken()); assertNotNull(idToken.getOtherClaims()); assertNotNull(idToken.getOtherClaims().get("group-value")); assertTrue(idToken.getOtherClaims().get("group-value") instanceof String); assertTrue("value1".equals(idToken.getOtherClaims().get("group-value")) || "value2".equals(idToken.getOtherClaims().get("group-value")) || "value3".equals(idToken.getOtherClaims().get("group-value"))); } finally { // revert userResource.leaveGroup(group1.getId()); adminClient.realm("test").groups().group(group1.getId()).remove(); userResource.leaveGroup(group2.getId()); adminClient.realm("test").groups().group(group2.getId()).remove(); deleteMappers(protocolMappers); } }
Example 11
Source File: OIDCProtocolMappersTest.java From keycloak with Apache License 2.0 | 4 votes |
@Test public void testGroupAttributeTwoGroupMultiValueNoAggregate() throws Exception { // get the user UserResource userResource = findUserByUsernameId(adminClient.realm("test"), "test-user@localhost"); // create two groups with two values (one is the same value) GroupRepresentation group1 = new GroupRepresentation(); group1.setName("group1"); group1.setAttributes(new HashMap<>()); group1.getAttributes().put("group-value", Arrays.asList("value1", "value2")); adminClient.realm("test").groups().add(group1); group1 = adminClient.realm("test").getGroupByPath("/group1"); userResource.joinGroup(group1.getId()); GroupRepresentation group2 = new GroupRepresentation(); group2.setName("group2"); group2.setAttributes(new HashMap<>()); group2.getAttributes().put("group-value", Arrays.asList("value2", "value3")); adminClient.realm("test").groups().add(group2); group2 = adminClient.realm("test").getGroupByPath("/group2"); userResource.joinGroup(group2.getId()); // create the attribute mapper ProtocolMappersResource protocolMappers = findClientResourceByClientId(adminClient.realm("test"), "test-app").getProtocolMappers(); protocolMappers.createMapper(createClaimMapper("group-value", "group-value", "group-value", "String", true, true, true, false)).close(); try { // test it OAuthClient.AccessTokenResponse response = browserLogin("password", "test-user@localhost", "password"); IDToken idToken = oauth.verifyIDToken(response.getIdToken()); assertNotNull(idToken.getOtherClaims()); assertNotNull(idToken.getOtherClaims().get("group-value")); assertTrue(idToken.getOtherClaims().get("group-value") instanceof List); assertEquals(2, ((List) idToken.getOtherClaims().get("group-value")).size()); assertTrue((((List) idToken.getOtherClaims().get("group-value")).contains("value1") && ((List) idToken.getOtherClaims().get("group-value")).contains("value2")) || (((List) idToken.getOtherClaims().get("group-value")).contains("value2") && ((List) idToken.getOtherClaims().get("group-value")).contains("value3"))); } finally { // revert userResource.leaveGroup(group1.getId()); adminClient.realm("test").groups().group(group1.getId()).remove(); userResource.leaveGroup(group2.getId()); adminClient.realm("test").groups().group(group2.getId()).remove(); deleteMappers(protocolMappers); } }
Example 12
Source File: OIDCProtocolMappersTest.java From keycloak with Apache License 2.0 | 4 votes |
@Test public void testGroupAttributeTwoGroupMultiValueAggregate() throws Exception { // get the user UserResource userResource = findUserByUsernameId(adminClient.realm("test"), "test-user@localhost"); // create two groups with two values (one is the same value) GroupRepresentation group1 = new GroupRepresentation(); group1.setName("group1"); group1.setAttributes(new HashMap<>()); group1.getAttributes().put("group-value", Arrays.asList("value1", "value2")); adminClient.realm("test").groups().add(group1); group1 = adminClient.realm("test").getGroupByPath("/group1"); userResource.joinGroup(group1.getId()); GroupRepresentation group2 = new GroupRepresentation(); group2.setName("group2"); group2.setAttributes(new HashMap<>()); group2.getAttributes().put("group-value", Arrays.asList("value2", "value3")); adminClient.realm("test").groups().add(group2); group2 = adminClient.realm("test").getGroupByPath("/group2"); userResource.joinGroup(group2.getId()); // create the attribute mapper ProtocolMappersResource protocolMappers = findClientResourceByClientId(adminClient.realm("test"), "test-app").getProtocolMappers(); protocolMappers.createMapper(createClaimMapper("group-value", "group-value", "group-value", "String", true, true, true, true)).close(); try { // test it OAuthClient.AccessTokenResponse response = browserLogin("password", "test-user@localhost", "password"); IDToken idToken = oauth.verifyIDToken(response.getIdToken()); assertNotNull(idToken.getOtherClaims()); assertNotNull(idToken.getOtherClaims().get("group-value")); assertTrue(idToken.getOtherClaims().get("group-value") instanceof List); assertEquals(3, ((List) idToken.getOtherClaims().get("group-value")).size()); assertTrue(((List) idToken.getOtherClaims().get("group-value")).contains("value1")); assertTrue(((List) idToken.getOtherClaims().get("group-value")).contains("value2")); assertTrue(((List) idToken.getOtherClaims().get("group-value")).contains("value3")); } finally { // revert userResource.leaveGroup(group1.getId()); adminClient.realm("test").groups().group(group1.getId()).remove(); userResource.leaveGroup(group2.getId()); adminClient.realm("test").groups().group(group2.getId()).remove(); deleteMappers(protocolMappers); } }
Example 13
Source File: SAMLServletAdapterTest.java From keycloak with Apache License 2.0 | 4 votes |
@Test public void testUserAttributeStatementMapperGroupsAggregate() throws Exception { GroupRepresentation group1 = new GroupRepresentation(); group1.setName("group1"); group1.setAttributes(new HashMap<>()); group1.getAttributes().put("group-value", Arrays.asList("value1", "value2")); GroupRepresentation group2 = new GroupRepresentation(); group2.setName("group2"); group2.setAttributes(new HashMap<>()); group2.getAttributes().put("group-value", Arrays.asList("value2", "value3")); ClientResource clientResource = ApiUtil.findClientResourceByClientId(testRealmResource(), AbstractSamlTest.SAML_CLIENT_ID_EMPLOYEE_2); ProtocolMappersResource protocolMappersResource = clientResource.getProtocolMappers(); Map<String, String> config = new LinkedHashMap<>(); config.put("attribute.nameformat", "Basic"); config.put("user.attribute", "group-value"); config.put("attribute.name", "group-attribute"); config.put("aggregate.attrs", "true"); try ( AutoCloseable g1 = Creator.create(testRealmResource(), group1); AutoCloseable g2 = Creator.create(testRealmResource(), group2); AutoCloseable uau = UserAttributeUpdater.forUserByUsername(testRealmResource(), "bburke") .setGroups("/group1", "/group2") .update(); AutoCloseable c = createProtocolMapper(protocolMappersResource, "group-value", "saml", "saml-user-attribute-mapper", config)) { employee2ServletPage.navigateTo(); assertCurrentUrlStartsWith(testRealmSAMLPostLoginPage); testRealmSAMLPostLoginPage.form().login("bburke", "password"); driver.navigate().to(employee2ServletPage.getUriBuilder().clone().path("getAttributes").build().toURL()); waitForPageToLoad(); String body = driver.findElement(By.xpath("//body")).getText(); String[] values = parseCommaSeparatedAttributes(body, "group-attribute"); assertThat(values, arrayContainingInAnyOrder("value1", "value2","value3")); employee2ServletPage.logout(); checkLoggedOut(employee2ServletPage, testRealmSAMLPostLoginPage); } }
Example 14
Source File: SAMLServletAdapterTest.java From keycloak with Apache License 2.0 | 4 votes |
@Test public void testUserAttributeStatementMapperGroupsNoAggregate() throws Exception { GroupRepresentation group1 = new GroupRepresentation(); group1.setName("group1"); group1.setAttributes(new HashMap<>()); group1.getAttributes().put("group-value", Arrays.asList("value1", "value2")); GroupRepresentation group2 = new GroupRepresentation(); group2.setName("group2"); group2.setAttributes(new HashMap<>()); group2.getAttributes().put("group-value", Arrays.asList("value2", "value3")); ClientResource clientResource = ApiUtil.findClientResourceByClientId(testRealmResource(), AbstractSamlTest.SAML_CLIENT_ID_EMPLOYEE_2); ProtocolMappersResource protocolMappersResource = clientResource.getProtocolMappers(); Map<String, String> config = new LinkedHashMap<>(); config.put("attribute.nameformat", "Basic"); config.put("user.attribute", "group-value"); config.put("attribute.name", "group-attribute"); try ( AutoCloseable g1 = Creator.create(testRealmResource(), group1); AutoCloseable g2 = Creator.create(testRealmResource(), group2); AutoCloseable uau = UserAttributeUpdater.forUserByUsername(testRealmResource(), "bburke") .setGroups("/group1", "/group2") .update(); AutoCloseable c = createProtocolMapper(protocolMappersResource, "group-value", "saml", "saml-user-attribute-mapper", config)) { employee2ServletPage.navigateTo(); assertCurrentUrlStartsWith(testRealmSAMLPostLoginPage); testRealmSAMLPostLoginPage.form().login("bburke", "password"); driver.navigate().to(employee2ServletPage.getUriBuilder().clone().path("getAttributes").build().toURL()); waitForPageToLoad(); String body = driver.findElement(By.xpath("//body")).getText(); String[] values = parseCommaSeparatedAttributes(body, "group-attribute"); assertThat(values, anyOf(arrayContainingInAnyOrder("value1", "value2"), arrayContainingInAnyOrder("value2", "value3"))); employee2ServletPage.logout(); checkLoggedOut(employee2ServletPage, testRealmSAMLPostLoginPage); } }