Example usage for org.springframework.security.oauth2.common OAuth2AccessToken getExpiresIn

List of usage examples for org.springframework.security.oauth2.common OAuth2AccessToken getExpiresIn

Introduction

In this page you can find the example usage for org.springframework.security.oauth2.common OAuth2AccessToken getExpiresIn.

Prototype

int getExpiresIn();

Source Link

Usage

From source file:am.ik.categolj2.app.authentication.AuthenticationHelper.java

int getRefreshTokenMaxAge(OAuth2AccessToken accessToken) {
    return accessToken.getExpiresIn() * 10 /* FIXME */;
}

From source file:it.smartcommunitylab.aac.controller.ResourceAccessController.java

@ApiOperation(value = "Get token info")
@RequestMapping(method = RequestMethod.GET, value = "/resources/token")
@Deprecated/*from   w ww . j a va2  s .  c  o  m*/
public @ResponseBody AACTokenValidation getTokenInfo(HttpServletRequest request, HttpServletResponse response) {
    AACTokenValidation result = new AACTokenValidation();

    try {
        String parsedToken = it.smartcommunitylab.aac.common.Utils.parseHeaderToken(request);

        OAuth2Authentication auth = resourceServerTokenServices.loadAuthentication(parsedToken);

        OAuth2AccessToken storedToken = tokenStore.getAccessToken(auth);
        long expiresIn = storedToken.getExpiresIn();

        String clientId = auth.getOAuth2Request().getClientId();

        ObjectMapper mapper = new ObjectMapper();
        mapper.setVisibility(mapper.getSerializationConfig().getDefaultVisibilityChecker()
                .withFieldVisibility(JsonAutoDetect.Visibility.ANY)
                .withGetterVisibility(JsonAutoDetect.Visibility.ANY)
                .withSetterVisibility(JsonAutoDetect.Visibility.ANY)
                .withCreatorVisibility(JsonAutoDetect.Visibility.ANY));

        String userName = null;
        String userId = null;
        boolean applicationToken = false;

        //         System.err.println(auth.getPrincipal());

        if (auth.getPrincipal() instanceof User) {
            User principal = (User) auth.getPrincipal();
            userId = principal.getUsername();
            //         } if (auth.getPrincipal() instanceof it.smartcommunitylab.aac.model.User) { 
            //            it.smartcommunitylab.aac.model.User principal = (it.smartcommunitylab.aac.model.User)auth.getPrincipal();
            //            userId = principal.getId().toString();
            //            userName = getWSO2Name(user);
        } else {
            ClientDetailsEntity client = clientDetailsRepository.findByClientId(clientId);
            applicationToken = true;
            userId = "" + client.getDeveloperId();
            //            if (client.getParameters() != null) {
            //               Map<String,?> parameters = mapper.readValue(client.getParameters(), Map.class);
            //               userName = (String)parameters.get("username");
            //            } else {
            ////               it.smartcommunitylab.aac.model.User user = userRepository.findOne(Long.parseLong(userId));
            //               userName = "admin";
            //               userName = (String)auth.getPrincipal();
            //            }
        }
        userName = userManager.getUserInternalName(Long.parseLong(userId));

        result.setUsername(userName);
        result.setUserId(userId);
        result.setClientId(clientId);
        result.setScope(Iterables.toArray(auth.getOAuth2Request().getScope(), String.class));
        result.setGrantType(auth.getOAuth2Request().getGrantType());

        long now = System.currentTimeMillis();
        result.setIssuedTime(now);
        result.setValidityPeriod(expiresIn);

        logger.info("Requested token " + parsedToken + " expires in " + result.getValidityPeriod());

        result.setValid(true);

        result.setApplicationToken(applicationToken);

        //         System.err.println(mapper.writeValueAsString(response));         
    } catch (InvalidTokenException e) {
        logger.error("Invalid token: " + e.getMessage());
        response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
        return null;
    } catch (Exception e) {
        logger.error("Error getting info for token: " + e.getMessage());
        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
        return null;
    }

    return result;
}

From source file:am.ik.categolj2.app.authentication.AuthenticationHelper.java

void saveAccessTokenInCookie(OAuth2AccessToken accessToken, HttpServletResponse response)
        throws UnsupportedEncodingException {
    Cookie accessTokenValueCookie = new Cookie(Categolj2Cookies.ACCESS_TOKEN_VALUE_COOKIE,
            URLEncoder.encode(accessToken.getValue(), "UTF-8"));
    accessTokenValueCookie.setMaxAge(accessToken.getExpiresIn());
    Cookie accessTokenExpireCookie = new Cookie(Categolj2Cookies.ACCESS_TOKEN_EXPIRATION_COOKIE,
            URLEncoder.encode(String.valueOf(accessToken.getExpiration().getTime()), "UTF-8"));
    accessTokenExpireCookie.setMaxAge(accessToken.getExpiresIn());

    response.addCookie(accessTokenValueCookie);
    response.addCookie(accessTokenExpireCookie);

    OAuth2RefreshToken refreshToken = accessToken.getRefreshToken();
    if (refreshToken != null) {
        Cookie refreshTokenCookie = new Cookie(Categolj2Cookies.REFRESH_TOKEN_VALUE_COOKIE,
                URLEncoder.encode(refreshToken.getValue(), "UTF-8"));
        refreshTokenCookie.setMaxAge(getRefreshTokenMaxAge(accessToken));
        response.addCookie(refreshTokenCookie);
    }//from w w w.  j a  v  a  2  s  .c  o m
}

From source file:org.apigw.authserver.svc.impl.TokenServicesImplTest.java

@Test
@DirtiesContext//from  w  w  w.j av  a  2s  .  co m
public void testDefaultTokenExpiry() throws Exception {
    services.setAccessTokenValiditySeconds(100);
    OAuth2Authentication expectedAuthentication = new OAuth2Authentication(
            createAuthorizationRequest(CLIENT, Collections.singleton(READ_SCOPE)),
            new TestAuthentication(false));
    OAuth2AccessToken accessToken = services.createAccessToken(expectedAuthentication);
    assertTrue(100 >= accessToken.getExpiresIn());
}

From source file:org.apigw.authserver.svc.impl.TokenServicesImplTest.java

@Test
@DirtiesContext//from www.  j  a  va 2 s .  c  om
public void testLeastRoleSpecificTokenExpiry() throws Exception {
    services.setAccessTokenValiditySeconds(100 * 24 * 3600);
    OAuth2Authentication expectedAuthentication = new OAuth2Authentication(
            createAuthorizationRequest(CLIENT, new HashSet<String>(Arrays.asList(READ_SCOPE, WRITE_SCOPE))),
            new TestAuthentication(false));
    OAuth2AccessToken accessToken = services.createAccessToken(expectedAuthentication);
    assertTrue(3600 >= accessToken.getExpiresIn());
}

From source file:org.apigw.authserver.svc.impl.TokenServicesImplTest.java

@Test
@DirtiesContext//from  w w  w.  j  a  v  a 2  s. c  o m
public void testRoleSpecificTokenExpiry() throws Exception {
    services.setAccessTokenValiditySeconds(100 * 24 * 3600);
    OAuth2Authentication expectedAuthentication = new OAuth2Authentication(
            createAuthorizationRequest(CLIENT, Collections.singleton(READ_SCOPE)),
            new TestAuthentication(false));
    OAuth2AccessToken accessToken = services.createAccessToken(expectedAuthentication);
    assertTrue(30 * 24 * 3600 >= accessToken.getExpiresIn());
}

From source file:org.apigw.authserver.svc.impl.TokenServicesImplTest.java

@Test
@DirtiesContext//from   www .  jav a  2  s  .  c  o  m
public void testUnlimitedTokenExpiry() throws Exception {
    services.setAccessTokenValiditySeconds(0);
    OAuth2Authentication expectedAuthentication = new OAuth2Authentication(
            createAuthorizationRequest(CLIENT, Collections.singleton(READ_SCOPE)),
            new TestAuthentication(false));
    OAuth2AccessToken accessToken = services.createAccessToken(expectedAuthentication);

    assertEquals("[" + READ_SCOPE + "]", accessToken.getScope().toString());
    assertEquals(0, accessToken.getExpiresIn());
    assertEquals(null, accessToken.getExpiration());
}

From source file:it.smartcommunitylab.aac.controller.TokenIntrospectionController.java

@ApiOperation(value = "Get token metadata")
@RequestMapping(method = RequestMethod.POST, value = "/token_introspection")
public ResponseEntity<AACTokenIntrospection> getTokenInfo(@RequestParam String token) {
    AACTokenIntrospection result = new AACTokenIntrospection();

    try {//ww w.j  a  v a2 s  . c  om
        OAuth2Authentication auth = resourceServerTokenServices.loadAuthentication(token);

        OAuth2AccessToken storedToken = tokenStore.getAccessToken(auth);

        String clientId = auth.getOAuth2Request().getClientId();

        String userName = null;
        String userId = null;
        boolean applicationToken = false;

        if (auth.getPrincipal() instanceof User) {
            User principal = (User) auth.getPrincipal();
            userId = principal.getUsername();
        } else {
            ClientDetailsEntity client = clientDetailsRepository.findByClientId(clientId);
            applicationToken = true;
            userId = "" + client.getDeveloperId();
        }
        userName = userManager.getUserInternalName(Long.parseLong(userId));
        String localName = userName.substring(0, userName.lastIndexOf('@'));
        String tenant = userName.substring(userName.lastIndexOf('@') + 1);

        result.setUsername(localName);
        result.setClient_id(clientId);
        result.setScope(StringUtils.collectionToDelimitedString(auth.getOAuth2Request().getScope(), " "));
        result.setExp((int) (storedToken.getExpiration().getTime() / 1000));
        result.setIat(result.getExp() - storedToken.getExpiresIn());
        result.setIss(issuer);
        result.setNbf(result.getIat());
        result.setSub(userId);
        result.setAud(clientId);
        // jti is not supported in this form

        // only bearer tokens supported
        result.setToken_type(OAuth2AccessToken.BEARER_TYPE);
        result.setActive(true);

        result.setAac_user_id(userId);
        result.setAac_grantType(auth.getOAuth2Request().getGrantType());
        result.setAac_applicationToken(applicationToken);
        result.setAac_am_tenant(tenant);
    } catch (Exception e) {
        logger.error("Error getting info for token: " + e.getMessage());
        result = new AACTokenIntrospection();
        result.setActive(false);
    }
    return ResponseEntity.ok(result);
}

From source file:org.apigw.authserver.svc.impl.TokenServicesImplTest.java

@Test
@DirtiesContext/*from  www  .  ja va  2s.com*/
public void testBuildAuthorizationGrantExpiresCitizenIs12Today() {

    long validitySeconds = 60 * 60 * 12;
    DateTime dateOfBirth = now().minusYears(12);
    String residentIdentificationNumber = yyyyMMddFormatter.print(dateOfBirth) + "-9876";
    services.setAccessTokenValiditySeconds(validitySeconds);

    OAuth2Authentication authentication = new OAuth2Authentication(
            createAuthorizationRequest(CLIENT, Collections.singleton(READ_SCOPE)),
            new TestAuthentication(false, residentIdentificationNumber));
    OAuth2AccessToken accessToken = services.createAccessToken(authentication);

    Date expirationDate = accessToken.getExpiration(); // 12 hours from now
    DateTime expectedDate = now().plus(validitySeconds * 1000L);

    // check the dates are within one second of each other - assumption is that the unit test runs in less than one second
    assertTrue("expirationDate:" + expirationDate + " != expectedDate:" + expectedDate,
            Math.abs(expirationDate.getTime() - expectedDate.getMillis()) < 1000);
    assertTrue("expires too soon:" + accessToken.getExpiresIn() + " - validitySeconds:" + validitySeconds,
            accessToken.getExpiresIn() <= validitySeconds);
    assertTrue("expires too late:" + accessToken.getExpiresIn() + " - validitySeconds:" + validitySeconds,
            accessToken.getExpiresIn() >= validitySeconds - 1);
}

From source file:org.apigw.authserver.svc.impl.TokenServicesImplTest.java

@Test
@DirtiesContext//from  ww w  . j  av a2  s . c om
public void testBuildAuthorizationGrantExpiresCitizenIs18Today() {

    long validitySeconds = 60 * 60 * 12; // 12 hours
    DateTime dateOfBirth = now().minusYears(18);
    String residentIdentificationNumber = yyyyMMddFormatter.print(dateOfBirth) + "-9876";
    services.setAccessTokenValiditySeconds(validitySeconds);

    OAuth2Authentication authentication = new OAuth2Authentication(
            createAuthorizationRequest(CLIENT, Collections.singleton(READ_SCOPE)),
            new TestAuthentication(false, residentIdentificationNumber));
    OAuth2AccessToken accessToken = services.createAccessToken(authentication);

    Date expirationDate = accessToken.getExpiration(); // 12 hours from now
    DateTime expectedDate = now().plus(validitySeconds * 1000L);

    // check the dates are within one second of each other - assumption is that the unit test runs in less than one second
    assertTrue("expirationDate:" + expirationDate + " != expectedDate:" + expectedDate,
            Math.abs(expirationDate.getTime() - expectedDate.getMillis()) < 1000);
    assertTrue("expires too soon:" + accessToken.getExpiresIn() + " - validitySeconds:" + validitySeconds,
            accessToken.getExpiresIn() <= validitySeconds);
    assertTrue("expires too late:" + accessToken.getExpiresIn() + " - validitySeconds:" + validitySeconds,
            accessToken.getExpiresIn() >= validitySeconds - 1);
}