Search in sources :

Example 16 with AuthContextLocalWrapper

use of org.forgerock.openam.core.rest.authn.core.wrappers.AuthContextLocalWrapper in project OpenAM by OpenRock.

the class LoginAuthenticator method getLoginProcess.

/**
     * Gets the Login Process object using the given Login Configuration.
     *
     * If it is the first request to initiate a login process then a new AuthContextLocal will be created and given
     * to a new Login Process object and startLoginProcess() will be called.
     *
     * Otherwise the request is a continuation of an existing login process, the exiting AuthContextLocal will
     * be retrieved, using the session id set in the Login Configuration, and given to a new Login Process object
     * which will continue the login process. startLoginProcess() will not be called.
     *
     * @param loginConfiguration The LoginConfiguration object to be used to start or continue the login process.
     * @return The LoginProcess object.
     * @throws AuthException If there is a problem retrieving or creating the underlying AuthContextLocal.
     * @throws AuthLoginException If there is a problem retrieving or creating the underlying AuthContextLocal or
     *                              starting the login process.
     * @throws SSOException If there is a problem starting the login process.
     */
public LoginProcess getLoginProcess(LoginConfiguration loginConfiguration) throws AuthException, AuthLoginException, SSOException, RestAuthException {
    verifyAuthenticationRealm(loginConfiguration.getHttpRequest());
    SSOToken ssoToken = coreServicesWrapper.getExistingValidSSOToken(new SessionID(loginConfiguration.getSSOTokenId()));
    if (noMoreAuthenticationRequired(ssoToken, loginConfiguration)) {
        return new CompletedLoginProcess(this, loginConfiguration, coreServicesWrapper, ssoToken);
    }
    AuthContextLocalWrapper authContext = getAuthContext(loginConfiguration);
    LoginProcess loginProcess = new LoginProcess(this, loginConfiguration, authContext, coreServicesWrapper);
    if (coreServicesWrapper.isNewRequest(authContext)) {
        startLoginProcess(loginProcess);
    }
    return loginProcess;
}
Also used : SSOToken(com.iplanet.sso.SSOToken) AuthContextLocalWrapper(org.forgerock.openam.core.rest.authn.core.wrappers.AuthContextLocalWrapper) SessionID(com.iplanet.dpro.session.SessionID)

Example 17 with AuthContextLocalWrapper

use of org.forgerock.openam.core.rest.authn.core.wrappers.AuthContextLocalWrapper in project OpenAM by OpenRock.

the class LoginAuthenticatorTest method shouldGetLoginProcessForInitialRequestWithAuthIndexTypeLevelWithSessionUpgradeButNotRequired.

@Test
public void shouldGetLoginProcessForInitialRequestWithAuthIndexTypeLevelWithSessionUpgradeButNotRequired() throws AuthException, AuthLoginException, SSOException, RestAuthException {
    //Given
    LoginConfiguration loginConfiguration = new LoginConfiguration();
    HttpServletRequest request = mock(HttpServletRequest.class);
    String sessionId = null;
    AuthIndexType authIndexType = AuthIndexType.LEVEL;
    String authIndexValue = "5";
    String ssoTokenId = "SSO_TOKEN_ID";
    AuthContextLocalWrapper authContextLocalWrapper = mock(AuthContextLocalWrapper.class);
    SSOToken ssoToken = mock(SSOToken.class);
    loginConfiguration.httpRequest(request).sessionId(sessionId).indexType(authIndexType).indexValue(authIndexValue).sessionUpgrade(ssoTokenId);
    given(ssoToken.getProperty("AuthLevel")).willReturn("10");
    given(coreServicesWrapper.getDomainNameByRequest(request)).willReturn("ORG_DN");
    given(coreServicesWrapper.getAuthContext(eq(request), eq((HttpServletResponse) null), (SessionID) anyObject(), eq(false), eq(false))).willReturn(authContextLocalWrapper);
    given(coreServicesWrapper.getExistingValidSSOToken(eq(new SessionID("SSO_TOKEN_ID")))).willReturn(ssoToken);
    given(coreServicesWrapper.isNewRequest(authContextLocalWrapper)).willReturn(true);
    given(coreServicesWrapper.doesValueContainKey(anyString(), anyString())).willReturn(false);
    given(coreServicesWrapper.doesValueContainKey("INDEX_VALUE", "INDEX_VALUE")).willReturn(true);
    //When
    LoginProcess loginProcess = loginAuthenticator.getLoginProcess(loginConfiguration);
    //Then
    assertThat(loginProcess.isSuccessful()).isTrue();
    verify(authContextLocalWrapper, never()).login();
    assertNotNull(loginProcess);
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) SSOToken(com.iplanet.sso.SSOToken) HttpServletResponse(javax.servlet.http.HttpServletResponse) AuthContextLocalWrapper(org.forgerock.openam.core.rest.authn.core.wrappers.AuthContextLocalWrapper) SessionID(com.iplanet.dpro.session.SessionID) Test(org.testng.annotations.Test)

Example 18 with AuthContextLocalWrapper

use of org.forgerock.openam.core.rest.authn.core.wrappers.AuthContextLocalWrapper in project OpenAM by OpenRock.

the class LoginAuthenticatorTest method shouldGetLoginProcessForInitialRequestWithAuthIndexTypeServiceWithSessionUpgrade.

@Test
public void shouldGetLoginProcessForInitialRequestWithAuthIndexTypeServiceWithSessionUpgrade() throws AuthException, AuthLoginException, SSOException, RestAuthException {
    //Given
    LoginConfiguration loginConfiguration = new LoginConfiguration();
    HttpServletRequest request = mock(HttpServletRequest.class);
    String sessionId = null;
    AuthIndexType authIndexType = AuthIndexType.SERVICE;
    String authIndexValue = "INDEX_VALUE_NEW";
    String ssoTokenId = "SSO_TOKEN_ID";
    AuthContextLocalWrapper authContextLocalWrapper = mock(AuthContextLocalWrapper.class);
    SSOToken ssoToken = mock(SSOToken.class);
    loginConfiguration.httpRequest(request).sessionId(sessionId).indexType(authIndexType).indexValue(authIndexValue).sessionUpgrade(ssoTokenId);
    given(ssoToken.getProperty("Service")).willReturn("INDEX_VALUE");
    given(coreServicesWrapper.getDomainNameByRequest(request)).willReturn("ORG_DN");
    given(coreServicesWrapper.getAuthContext(eq(request), eq((HttpServletResponse) null), (SessionID) anyObject(), eq(true), eq(false))).willReturn(authContextLocalWrapper);
    given(coreServicesWrapper.getExistingValidSSOToken(eq(new SessionID("SSO_TOKEN_ID")))).willReturn(ssoToken);
    given(coreServicesWrapper.isNewRequest(authContextLocalWrapper)).willReturn(true);
    given(coreServicesWrapper.doesValueContainKey(anyString(), anyString())).willReturn(false);
    given(coreServicesWrapper.doesValueContainKey("INDEX_VALUE", "INDEX_VALUE")).willReturn(true);
    given(authContextLocalWrapper.isSessionUpgrade()).willReturn(true);
    //When
    LoginProcess loginProcess = loginAuthenticator.getLoginProcess(loginConfiguration);
    //Then
    verify(authContextLocalWrapper).login(AuthContext.IndexType.SERVICE, "INDEX_VALUE_NEW");
    assertNotNull(loginProcess);
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) SSOToken(com.iplanet.sso.SSOToken) HttpServletResponse(javax.servlet.http.HttpServletResponse) AuthContextLocalWrapper(org.forgerock.openam.core.rest.authn.core.wrappers.AuthContextLocalWrapper) SessionID(com.iplanet.dpro.session.SessionID) Test(org.testng.annotations.Test)

Example 19 with AuthContextLocalWrapper

use of org.forgerock.openam.core.rest.authn.core.wrappers.AuthContextLocalWrapper in project OpenAM by OpenRock.

the class LoginAuthenticatorTest method shouldGetLoginProcessForInitialRequestWithNoAuthIndexType.

@Test
public void shouldGetLoginProcessForInitialRequestWithNoAuthIndexType() throws AuthException, AuthLoginException, SSOException, RestAuthException {
    //Given
    LoginConfiguration loginConfiguration = new LoginConfiguration();
    HttpServletRequest request = mock(HttpServletRequest.class);
    String sessionId = null;
    AuthIndexType authIndexType = AuthIndexType.NONE;
    String authIndexValue = "INDEX_VALUE";
    AuthContextLocalWrapper authContextLocalWrapper = mock(AuthContextLocalWrapper.class);
    loginConfiguration.httpRequest(request).sessionId(sessionId).indexType(authIndexType).indexValue(authIndexValue);
    given(coreServicesWrapper.getDomainNameByRequest(request)).willReturn("ORG_DN");
    given(coreServicesWrapper.getAuthContext(eq(request), eq((HttpServletResponse) null), (SessionID) anyObject(), eq(false), eq(false))).willReturn(authContextLocalWrapper);
    given(coreServicesWrapper.isNewRequest(authContextLocalWrapper)).willReturn(true);
    //When
    LoginProcess loginProcess = loginAuthenticator.getLoginProcess(loginConfiguration);
    //Then
    verify(authContextLocalWrapper).login();
    verify(coreServicesWrapper).getAuthContext(eq(request), eq((HttpServletResponse) null), (SessionID) anyObject(), eq(false), eq(false));
    assertNotNull(loginProcess);
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) HttpServletResponse(javax.servlet.http.HttpServletResponse) AuthContextLocalWrapper(org.forgerock.openam.core.rest.authn.core.wrappers.AuthContextLocalWrapper) Test(org.testng.annotations.Test)

Example 20 with AuthContextLocalWrapper

use of org.forgerock.openam.core.rest.authn.core.wrappers.AuthContextLocalWrapper in project OpenAM by OpenRock.

the class LoginAuthenticatorTest method shouldGetLoginProcessForInitialRequestWithAuthIndexTypeUserWithSessionUpgradeButNotRequired.

@Test
public void shouldGetLoginProcessForInitialRequestWithAuthIndexTypeUserWithSessionUpgradeButNotRequired() throws AuthException, AuthLoginException, SSOException, RestAuthException {
    //Given
    LoginConfiguration loginConfiguration = new LoginConfiguration();
    HttpServletRequest request = mock(HttpServletRequest.class);
    String sessionId = null;
    AuthIndexType authIndexType = AuthIndexType.USER;
    String authIndexValue = "INDEX_VALUE";
    String ssoTokenId = "SSO_TOKEN_ID";
    AuthContextLocalWrapper authContextLocalWrapper = mock(AuthContextLocalWrapper.class);
    SSOToken ssoToken = mock(SSOToken.class);
    loginConfiguration.httpRequest(request).sessionId(sessionId).indexType(authIndexType).indexValue(authIndexValue).sessionUpgrade(ssoTokenId);
    given(ssoToken.getProperty("UserToken")).willReturn("INDEX_VALUE");
    given(coreServicesWrapper.getDomainNameByRequest(request)).willReturn("ORG_DN");
    given(coreServicesWrapper.getAuthContext(eq(request), eq((HttpServletResponse) null), (SessionID) anyObject(), eq(false), eq(false))).willReturn(authContextLocalWrapper);
    given(coreServicesWrapper.getExistingValidSSOToken(eq(new SessionID("SSO_TOKEN_ID")))).willReturn(ssoToken);
    given(coreServicesWrapper.isNewRequest(authContextLocalWrapper)).willReturn(true);
    //When
    LoginProcess loginProcess = loginAuthenticator.getLoginProcess(loginConfiguration);
    //Then
    assertThat(loginProcess.isSuccessful()).isTrue();
    verify(authContextLocalWrapper, never()).login();
    assertNotNull(loginProcess);
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) SSOToken(com.iplanet.sso.SSOToken) HttpServletResponse(javax.servlet.http.HttpServletResponse) AuthContextLocalWrapper(org.forgerock.openam.core.rest.authn.core.wrappers.AuthContextLocalWrapper) SessionID(com.iplanet.dpro.session.SessionID) Test(org.testng.annotations.Test)

Aggregations

AuthContextLocalWrapper (org.forgerock.openam.core.rest.authn.core.wrappers.AuthContextLocalWrapper)30 Test (org.testng.annotations.Test)29 HttpServletRequest (javax.servlet.http.HttpServletRequest)24 HttpServletResponse (javax.servlet.http.HttpServletResponse)24 SessionID (com.iplanet.dpro.session.SessionID)17 SSOToken (com.iplanet.sso.SSOToken)17 LoginConfiguration (org.forgerock.openam.core.rest.authn.core.LoginConfiguration)8 LoginProcess (org.forgerock.openam.core.rest.authn.core.LoginProcess)7 JsonValue (org.forgerock.json.JsonValue)5 HashMap (java.util.HashMap)4 SSOTokenID (com.iplanet.sso.SSOTokenID)3 PagePropertiesCallback (com.sun.identity.authentication.spi.PagePropertiesCallback)3 Map (java.util.Map)3 Callback (javax.security.auth.callback.Callback)3 RestAuthException (org.forgerock.openam.core.rest.authn.exceptions.RestAuthException)3 Set (java.util.Set)1 SignedJwt (org.forgerock.json.jose.jws.SignedJwt)1 JwtClaimsSet (org.forgerock.json.jose.jwt.JwtClaimsSet)1 RestAuthErrorCodeException (org.forgerock.openam.core.rest.authn.exceptions.RestAuthErrorCodeException)1 RestAuthResponseException (org.forgerock.openam.core.rest.authn.exceptions.RestAuthResponseException)1