use of com.enonic.xp.security.IdProviders in project xp by enonic.
the class LoginHandlerTest method testLoginMultipleIdProvidersInOrder.
@Test
public void testLoginMultipleIdProvidersInOrder() {
final IdProvider idProvider1 = IdProvider.create().displayName("Id Provider 1").key(IdProviderKey.from("idprovider1")).build();
final IdProvider idProvider3 = IdProvider.create().displayName("Id Provider 3").key(IdProviderKey.from("idprovider3")).build();
final IdProvider idProvider2 = IdProvider.create().displayName("Id Provider 2").key(IdProviderKey.from("idprovider2")).build();
final IdProviders idProviders = IdProviders.from(idProvider1, idProvider3, idProvider2);
final AuthenticationInfo authInfo = TestDataFixtures.createAuthenticationInfo();
final EmailPasswordAuthToken expectedAuthToken = new EmailPasswordAuthToken();
expectedAuthToken.setEmail("user1@enonic.com");
expectedAuthToken.setPassword("pwd123");
expectedAuthToken.setIdProvider(idProvider3.getKey());
final AuthTokenMatcher matcher = new AuthTokenMatcher(expectedAuthToken);
Mockito.when(this.securityService.authenticate(Mockito.argThat(matcher))).thenReturn(authInfo);
Mockito.when(this.securityService.getIdProviders()).thenReturn(idProviders);
runFunction("/test/login-test.js", "loginMultipleIdProvidersInOrder");
final Session session = ContextAccessor.current().getLocalScope().getSession();
final AuthenticationInfo sessionAuthInfo = session.getAttribute(AuthenticationInfo.class);
assertEquals(authInfo, sessionAuthInfo);
assertEquals(3, matcher.loginIdProviderAttempts.size());
assertEquals("idprovider1", matcher.loginIdProviderAttempts.get(0).toString());
assertEquals("idprovider2", matcher.loginIdProviderAttempts.get(1).toString());
assertEquals("idprovider3", matcher.loginIdProviderAttempts.get(2).toString());
}
use of com.enonic.xp.security.IdProviders in project xp by enonic.
the class LoginHandlerTest method testSessionInvalidatedOnLogin.
@Test
public void testSessionInvalidatedOnLogin() {
final AuthenticationInfo authInfo = TestDataFixtures.createAuthenticationInfo();
final IdProviders idProviders = IdProviders.from(IdProvider.create().displayName("system").key(IdProviderKey.from("system")).build());
Mockito.when(this.securityService.authenticate(Mockito.any())).thenReturn(authInfo);
Mockito.when(this.securityService.getIdProviders()).thenReturn(idProviders);
final SessionMock session = Mockito.spy(new SessionMock());
ContextAccessor.current().getLocalScope().setSession(session);
runScript("/lib/xp/examples/auth/login.js");
verify(session, times(5)).invalidate();
}
use of com.enonic.xp.security.IdProviders in project xp by enonic.
the class LoginHandlerTest method testLoginWithScopeNONE.
@Test
public void testLoginWithScopeNONE() {
ContextAccessor.current().getLocalScope().setSession(null);
final AuthenticationInfo authInfo = AuthenticationInfo.create().user(TestDataFixtures.getTestUser()).principals(RoleKeys.ADMIN_LOGIN).build();
final IdProviders idProviders = IdProviders.from(IdProvider.create().displayName("system").key(IdProviderKey.from("system")).build());
Mockito.when(this.securityService.authenticate(Mockito.any())).thenReturn(authInfo);
Mockito.when(this.securityService.getIdProviders()).thenReturn(idProviders);
runFunction("/test/login-test.js", "loginWithScopeNONE");
assertNull(ContextAccessor.current().getLocalScope().getSession());
assertNull(ContextAccessor.current().getLocalScope().getAttribute(AuthenticationInfo.class));
}
use of com.enonic.xp.security.IdProviders in project xp by enonic.
the class SecurityServiceImpl method authenticate.
@Override
public AuthenticationInfo authenticate(final AuthenticationToken token) {
if (!(token instanceof VerifiedUsernameAuthToken) && !(token instanceof VerifiedEmailAuthToken)) {
addRandomDelay();
}
if (isSuAuthenticationEnabled(token)) {
return authenticateSu((UsernamePasswordAuthToken) token);
}
if (token.getIdProvider() != null) {
return doAuthenticate(token);
} else {
final IdProviders idProviders = callAsAuthenticated(this::getIdProviders);
for (IdProvider idProvider : idProviders) {
token.setIdProvider(idProvider.getKey());
final AuthenticationInfo authInfo = doAuthenticate(token);
if (authInfo.isAuthenticated()) {
return authInfo;
}
}
return AuthenticationInfo.unAuthenticated();
}
}
use of com.enonic.xp.security.IdProviders in project xp by enonic.
the class ApplicationInfoServiceImplTest method testIdProviderApplication.
@Test
public void testIdProviderApplication() {
mockIdProviderApplication(this.applicationKey);
final IdProviderDescriptor idProviderDescriptor = this.service.getIdProviderDescriptor(this.applicationKey);
assertNotNull(idProviderDescriptor);
final IdProviders idProviders = this.service.getIdProviderReferences(this.applicationKey);
assertEquals(idProviders.getSize(), 2);
}
Aggregations