/** * Returns the DN as principal name. * @return the DN */ @NotNull @Override public String getPrincipalName() { return ref.getId(); }
@NotNull @Override public String fromExternalIdentityRef(@NotNull ExternalIdentityRef externalIdentityRef) { return "p_" + externalIdentityRef.getId(); } }
@NotNull @Override public String getId() { return ref.getId(); }
@NotNull @Override public String getPrincipalName() { return ref.getId(); }
@NotNull @Override public String fromExternalIdentityRef(@NotNull ExternalIdentityRef externalIdentityRef) throws ExternalIdentityException { if (!isMyRef(externalIdentityRef)) { throw new ExternalIdentityException("Foreign IDP " + externalIdentityRef.getString()); } return externalIdentityRef.getId(); }
@Override public ExternalIdentity getIdentity(@NotNull ExternalIdentityRef ref) throws ExternalIdentityException { if (ID_EXCEPTION.equals(ref.getId())) { throw new ExternalIdentityException(ID_EXCEPTION); } ExternalIdentity id = externalUsers.get(ref.getId().toLowerCase()); if (id != null) { return id; } return externalGroups.get(ref.getId().toLowerCase()); }
public static void assertIfEquals(String message, String[] expected, Iterable<ExternalIdentityRef> result) { List<String> dns = new LinkedList<String>(); for (ExternalIdentityRef ref: result) { dns.add(ref.getId()); } Collections.sort(dns); Arrays.sort(expected); String exp = Text.implode(expected, ",\n"); String res = Text.implode(dns.toArray(new String[dns.size()]), ",\n"); assertEquals(message, exp, res); }
public static void assertIfEquals(String message, String[] expected, Iterable<ExternalIdentityRef> result) { List<String> dns = new LinkedList<String>(); for (ExternalIdentityRef ref: result) { dns.add(ref.getId()); } Collections.sort(dns); Arrays.sort(expected); String exp = Text.implode(expected, ",\n"); String res = Text.implode(dns.toArray(new String[dns.size()]), ",\n"); assertEquals(message, exp, res); }
private Map<String, String> getExpectedUserResult(String expectedOp, boolean includeGroups) throws ExternalIdentityException { Map<String, String> expected = new HashMap<>(); Iterator<ExternalUser> it = idp.listUsers(); while (it.hasNext()) { ExternalUser eu = it.next(); expected.put(eu.getId(), expectedOp); if (includeGroups) { for (ExternalIdentityRef ref : eu.getDeclaredGroups()) { expected.put(ref.getId(), expectedOp); } } } return expected; }
@Test public void testToString() { for (ExternalIdentityRef r : ImmutableList.of(ref, refEmptyProvider, refEmptyProvider)) { assertEquals("ExternalIdentityRef{" + "id='" + r.getId() + '\'' + ", providerName='" + r.getProviderName() + '\'' + '}', r.toString()); } } }
private void authenticateInternal(LdapIdentityProvider idp, String id) throws Exception { SimpleCredentials creds = new SimpleCredentials(TEST_USER1_UID, "pass".toCharArray()); ExternalUser user = idp.authenticate(creds); assertNotNull("User 1 must authenticate", user); assertEquals("User Ref", TEST_USER1_DN, ((LdapUser)user).getEntry().getDn().getName()); assertEquals("User Ref", id, user.getExternalId().getId()); }
private static void assertSyncedMembership(@NotNull UserManager userManager, @NotNull Authorizable a, @NotNull ExternalIdentity externalIdentity) throws Exception { for (ExternalIdentityRef ref : externalIdentity.getDeclaredGroups()) { Group gr = userManager.getAuthorizable(ref.getId(), Group.class); assertNotNull(gr); assertTrue(gr.isMember(a)); } }
private void authenticateValidateInternal(LdapIdentityProvider idp, String id) throws Exception { SimpleCredentials creds = new SimpleCredentials(TEST_USER1_UID, "pass".toCharArray()); for (int i=0; i<8; i++) { ExternalUser user = this.idp.authenticate(creds); assertNotNull("User 1 must authenticate (i=" + i + ")", user); assertEquals("User Ref", TEST_USER1_DN, ((LdapUser)user).getEntry().getDn().getName()); assertEquals("User Ref", id, user.getExternalId().getId()); } }
@Test public void testSyncMembershipDepth1() throws Exception { ExternalUser externalUser = idp.listUsers().next(); Authorizable a = syncCtx.createUser(externalUser); syncCtx.syncMembership(externalUser, a, 1); assertTrue(root.hasPendingChanges()); for (ExternalIdentityRef ref : externalUser.getDeclaredGroups()) { Group g = userManager.getAuthorizable(ref.getId(), Group.class); assertNotNull(g); assertTrue(g.isDeclaredMember(a)); } }
@Test public void testInitialSyncExternalUsers() throws Exception { ExternalUser externalUser = idp.getUser(TestIdentityProvider.ID_TEST_USER); String[] externalId = new String[] {externalUser.getExternalId().getString()}; String[] result = syncMBean.syncExternalUsers(externalId); assertResultMessages(result, TestIdentityProvider.ID_TEST_USER, "add"); UserManager userManager = getUserManager(); User testUser = userManager.getAuthorizable(externalUser.getId(), User.class); assertNotNull(testUser); for (ExternalIdentityRef groupRef : externalUser.getDeclaredGroups()) { assertNotNull(userManager.getAuthorizable(groupRef.getId())); } }
@Test public void testInitialSyncExternalGroup() throws Exception { ExternalGroup externalGroup = idp.getGroup("a"); String[] externalId = new String[] {externalGroup.getExternalId().getString()}; String[] result = syncMBean.syncExternalUsers(externalId); assertResultMessages(result, "a", "add"); UserManager userManager = getUserManager(); Group aGroup = userManager.getAuthorizable(externalGroup.getId(), Group.class); assertNotNull(aGroup); // membership of groups are not synced (unless imposed by user-sync with membership depth) for (ExternalIdentityRef groupRef : externalGroup.getDeclaredGroups()) { assertNull(userManager.getAuthorizable(groupRef.getId())); } }
@Test public void testFindExternalIdentity() throws Exception { login(new SimpleCredentials(USER_ID, new char[0])).close(); root.refresh(); SyncedIdentity id = syncHandler.findIdentity(userManager, USER_ID); assertNotNull("known authorizable should exist", id); ExternalIdentityRef ref = id.getExternalIdRef(); assertNotNull(ref); assertEquals("external user should have correct external ref.idp", idp.getName(), ref.getProviderName()); assertEquals("external user should have correct external ref.id", USER_ID, id.getExternalIdRef().getId()); }
@Test public void testInitialSyncExternalUsersNoNesting() throws Exception { syncConfig.user().setMembershipNestingDepth(-1); ExternalUser externalUser = idp.getUser(TestIdentityProvider.ID_TEST_USER); String[] externalId = new String[] {externalUser.getExternalId().getString()}; String[] result = syncMBean.syncExternalUsers(externalId); assertResultMessages(result, TestIdentityProvider.ID_TEST_USER, "add"); UserManager userManager = getUserManager(); User testUser = userManager.getAuthorizable(externalUser.getId(), User.class); assertNotNull(testUser); for (ExternalIdentityRef groupRef : externalUser.getDeclaredGroups()) { assertNull(userManager.getAuthorizable(groupRef.getId())); } }
@Test public void testEquals() { assertEquals(refNullProvider, refNullProvider); assertEquals(refNullProvider, new ExternalIdentityRef(USERID, refNullProvider.getProviderName())); assertEquals(refNullProvider, new ExternalIdentityRef(USERID, refEmptyProvider.getProviderName())); assertEquals(refNullProvider, refEmptyProvider); assertEquals(refEmptyProvider, refNullProvider); assertEquals(ref, ref); assertEquals(ref, new ExternalIdentityRef(ref.getId(), ref.getProviderName())); assertEquals(ref, new ExternalIdentityRef(USERID, PROVIDER_NAME)); }