public static OAuth2AccessToken valueOf(Map<String, String> tokenParams) { DefaultOAuth2AccessToken token = new DefaultOAuth2AccessToken(tokenParams.get(ACCESS_TOKEN)); if (tokenParams.containsKey(EXPIRES_IN)) { long expiration = 0; try { expiration = Long.parseLong(String.valueOf(tokenParams.get(EXPIRES_IN))); } catch (NumberFormatException e) { // fall through... } token.setExpiration(new Date(System.currentTimeMillis() + (expiration * 1000L))); } if (tokenParams.containsKey(REFRESH_TOKEN)) { String refresh = tokenParams.get(REFRESH_TOKEN); DefaultOAuth2RefreshToken refreshToken = new DefaultOAuth2RefreshToken(refresh); token.setRefreshToken(refreshToken); } if (tokenParams.containsKey(SCOPE)) { Set<String> scope = new TreeSet<String>(); for (StringTokenizer tokenizer = new StringTokenizer(tokenParams.get(SCOPE), " ,"); tokenizer .hasMoreTokens();) { scope.add(tokenizer.nextToken()); } token.setScope(scope); } if (tokenParams.containsKey(TOKEN_TYPE)) { token.setTokenType(tokenParams.get(TOKEN_TYPE)); } return token; }
accessToken.setTokenType(tokenType); if (expiresIn != null) { accessToken.setExpiration(new Date(System.currentTimeMillis() + (expiresIn * 1000)));
@SuppressWarnings({ "unchecked" }) private Map<String, Object> getMap(String path, String accessToken) { this.logger.debug("Getting user info from: " + path); try { OAuth2RestOperations restTemplate = this.restTemplate; if (restTemplate == null) { BaseOAuth2ProtectedResourceDetails resource = new BaseOAuth2ProtectedResourceDetails(); resource.setClientId(this.clientId); restTemplate = new OAuth2RestTemplate(resource); } OAuth2AccessToken existingToken = restTemplate.getOAuth2ClientContext() .getAccessToken(); if (existingToken == null || !accessToken.equals(existingToken.getValue())) { DefaultOAuth2AccessToken token = new DefaultOAuth2AccessToken( accessToken); token.setTokenType(this.tokenType); restTemplate.getOAuth2ClientContext().setAccessToken(token); } return restTemplate.getForEntity(path, Map.class).getBody(); } catch (Exception ex) { this.logger.info("Could not fetch user details: " + ex.getClass() + ", " + ex.getMessage()); return Collections.<String, Object>singletonMap("error", "Could not fetch user details"); } } }
@SuppressWarnings({ "unchecked" }) private Map<String, Object> getMap(String path, String accessToken) { this.logger.debug("Getting user info from: " + path); try { OAuth2RestOperations restTemplate = this.restTemplate; if (restTemplate == null) { BaseOAuth2ProtectedResourceDetails resource = new BaseOAuth2ProtectedResourceDetails(); resource.setClientId(this.clientId); restTemplate = new OAuth2RestTemplate(resource); } OAuth2AccessToken existingToken = restTemplate.getOAuth2ClientContext() .getAccessToken(); if (existingToken == null || !accessToken.equals(existingToken.getValue())) { DefaultOAuth2AccessToken token = new DefaultOAuth2AccessToken( accessToken); token.setTokenType(this.tokenType); restTemplate.getOAuth2ClientContext().setAccessToken(token); } return restTemplate.getForEntity(path, Map.class).getBody(); } catch (Exception ex) { this.logger.info("Could not fetch user details: " + ex.getClass() + ", " + ex.getMessage()); return Collections.<String, Object>singletonMap("error", "Could not fetch user details"); } } }
accessToken.setTokenType(tokenType); if (expiresIn != null) { accessToken.setExpiration(new Date(System.currentTimeMillis() + (expiresIn * 1000)));
/** * Copy constructor for access token. * * @param accessToken */ public DefaultOAuth2AccessToken(OAuth2AccessToken accessToken) { this(accessToken.getValue()); setAdditionalInformation(accessToken.getAdditionalInformation()); setRefreshToken(accessToken.getRefreshToken()); setExpiration(accessToken.getExpiration()); setScope(accessToken.getScope()); setTokenType(accessToken.getTokenType()); }
public AbstractOAuth2AccessToken(String accessToken, String tokenType, String expires, String scope, String refreshToken, final String idToken) { Validate.notNull(accessToken, "AccessToken must not be null"); Validate.notNull(tokenType, "TokenType must not be null"); Validate.notNull(expires, "Expires must not be null"); Validate.notNull(scope, "Scope must not be null"); this.oAuth2AccessToken = new DefaultOAuth2AccessToken(accessToken); ((DefaultOAuth2AccessToken)oAuth2AccessToken).setTokenType(tokenType); ((DefaultOAuth2AccessToken)oAuth2AccessToken).setExpiration(createExpirationDate(expires)); ((DefaultOAuth2AccessToken)oAuth2AccessToken).setScope(createScopeSet(scope)); ((DefaultOAuth2AccessToken)oAuth2AccessToken).setRefreshToken(new DefaultOAuth2RefreshToken(refreshToken)); ((DefaultOAuth2AccessToken)oAuth2AccessToken).setAdditionalInformation( new HashMap<String, Object>(){{put(AccessToken.ID_TOKEN, idToken);}} ); }
@Override public OAuth2AccessToken readAccessToken(String token) { AccessToken accessToken = validateAccessToken(token); Set<String> scopes = new HashSet<String>(); for (Scope scope : accessToken.getScopes()) { scopes.add(scope.toString()); } DefaultOAuth2AccessToken oAuth2AccessToken = new DefaultOAuth2AccessToken(token); oAuth2AccessToken.setScope(scopes); oAuth2AccessToken.setExpiration(accessToken.getExpiresAt()); oAuth2AccessToken.setTokenType("BEARER"); return oAuth2AccessToken; }
private Map<String, Object> getMap(String path, String accessToken) { this.logger.info("Getting user info from: " + path); try { Object ex = this.restTemplate; if (ex == null) { BaseOAuth2ProtectedResourceDetails existingToken = new BaseOAuth2ProtectedResourceDetails(); existingToken.setClientId(this.clientId); ex = new OAuth2RestTemplate(existingToken); } OAuth2AccessToken existingToken1 = ((OAuth2RestOperations) ex).getOAuth2ClientContext().getAccessToken(); if (existingToken1 == null || !accessToken.equals(existingToken1.getValue())) { DefaultOAuth2AccessToken token = new DefaultOAuth2AccessToken(accessToken); token.setTokenType(this.tokenType); ((OAuth2RestOperations) ex).getOAuth2ClientContext().setAccessToken(token); } return (Map) ((OAuth2RestOperations) ex).getForEntity(path, Map.class, new Object[0]).getBody(); } catch (Exception var6) { this.logger.info("Could not fetch user details: " + var6.getClass() + ", " + var6.getMessage()); return Collections.singletonMap("error", "Could not fetch user details"); } } }
public AbstractOAuth2AccessToken(String accessToken, String tokenType, String expires, String scope, String refreshToken, final String idToken) { Validate.notNull(accessToken, "AccessToken must not be null"); Validate.notNull(tokenType, "TokenType must not be null"); Validate.notNull(scope, "Scope must not be null"); this.oAuth2AccessToken = new DefaultOAuth2AccessToken(accessToken); ((DefaultOAuth2AccessToken)oAuth2AccessToken).setTokenType(tokenType); ((DefaultOAuth2AccessToken)oAuth2AccessToken).setExpiration(createExpirationDate(expires)); ((DefaultOAuth2AccessToken)oAuth2AccessToken).setScope(createScopeSet(scope)); ((DefaultOAuth2AccessToken)oAuth2AccessToken).setRefreshToken(new DefaultOAuth2RefreshToken(refreshToken)); ((DefaultOAuth2AccessToken)oAuth2AccessToken).setAdditionalInformation( new HashMap<String, Object>(){{put(AccessToken.ID_TOKEN, idToken);}} ); }
/** * Attempt to copy an access token from the security context into the oauth2 context. * * @return true if the token was copied */ public boolean copyToken() { if (context.getAccessToken() == null) { Authentication authentication = SecurityContextHolder.getContext() .getAuthentication(); if (authentication != null) { Object details = authentication.getDetails(); if (details instanceof OAuth2AuthenticationDetails) { OAuth2AuthenticationDetails holder = (OAuth2AuthenticationDetails) details; String token = holder.getTokenValue(); DefaultOAuth2AccessToken accessToken = new DefaultOAuth2AccessToken( token); String tokenType = holder.getTokenType(); if (tokenType != null) { accessToken.setTokenType(tokenType); } context.setAccessToken(accessToken); return true; } } } return false; }
@Test(expected = AccessTokenRequiredException.class) public void testAccessDeneiedException() throws Exception { DefaultOAuth2AccessToken token = new DefaultOAuth2AccessToken("12345"); token.setTokenType("access_token"); authenticator.authenticate(resource, restTemplate.getOAuth2ClientContext(), request); }
@Test(expected = AccessTokenRequiredException.class) public void testAccessDeneiedException() throws Exception { DefaultOAuth2AccessToken token = new DefaultOAuth2AccessToken("12345"); token.setTokenType("access_token"); authenticator.authenticate(resource, restTemplate.getOAuth2ClientContext(), request); }
@Test(expected = AccessTokenRequiredException.class) public void testAccessDeneiedException() throws Exception { DefaultOAuth2AccessToken token = new DefaultOAuth2AccessToken("12345"); token.setTokenType("access_token"); authenticator.authenticate(resource, restTemplate.getOAuth2ClientContext(), request); }
private OAuth2AccessToken toOAuth2AccessToken(OrcidOauth2TokenDetail token) { DefaultOAuth2AccessToken result = new DefaultOAuth2AccessToken(token.getTokenValue()); result.setExpiration(token.getTokenExpiration()); result.setRefreshToken(new DefaultOAuth2RefreshToken(token.getRefreshTokenValue())); result.setScope(OAuth2Utils.parseParameterList(token.getScope())); result.setTokenType(token.getTokenType()); result.setValue(token.getTokenValue()); Map<String, Object> additionalInfo = new HashMap<String, Object>(); if(token.getProfile() != null) { additionalInfo.put(OrcidOauth2Constants.ORCID, token.getProfile().getId()); additionalInfo.put(OrcidOauth2Constants.NAME, profileEntityManager.retrivePublicDisplayName(token.getProfile().getId())); } result.setAdditionalInformation(additionalInfo); return result; } }
/** * Copy constructor for access token. * * @param accessToken */ public DefaultOAuth2AccessToken(OAuth2AccessToken accessToken) { this(accessToken.getValue()); setAdditionalInformation(accessToken.getAdditionalInformation()); setRefreshToken(accessToken.getRefreshToken()); setExpiration(accessToken.getExpiration()); setScope(accessToken.getScope()); setTokenType(accessToken.getTokenType()); }
@Test public void testNonBearerToken() throws Exception { DefaultOAuth2AccessToken token = new DefaultOAuth2AccessToken("12345"); token.setTokenType("access_token"); restTemplate.getOAuth2ClientContext().setAccessToken(token); authenticator.authenticate(resource, restTemplate.getOAuth2ClientContext(), request); String auth = request.getHeaders().getFirst("Authorization"); assertTrue(auth.startsWith("access_token ")); }
@Test public void testNonBearerToken() throws Exception { DefaultOAuth2AccessToken token = new DefaultOAuth2AccessToken("12345"); token.setTokenType("access_token"); restTemplate.getOAuth2ClientContext().setAccessToken(token); authenticator.authenticate(resource, restTemplate.getOAuth2ClientContext(), request); String auth = request.getHeaders().getFirst("Authorization"); assertTrue(auth.startsWith("access_token ")); }
@Test public void testNonBearerToken() throws Exception { DefaultOAuth2AccessToken token = new DefaultOAuth2AccessToken("12345"); token.setTokenType("access_token"); restTemplate.getOAuth2ClientContext().setAccessToken(token); authenticator.authenticate(resource, restTemplate.getOAuth2ClientContext(), request); String auth = request.getHeaders().getFirst("Authorization"); assertTrue(auth.startsWith("access_token ")); }
@Test public void testCustomAuthenticator() throws Exception { DefaultOAuth2AccessToken token = new DefaultOAuth2AccessToken("12345"); token.setTokenType("access_token"); restTemplate.getOAuth2ClientContext().setAccessToken(token); OAuth2RequestAuthenticator customAuthenticator = new OAuth2RequestAuthenticator() { @Override public void authenticate( OAuth2ProtectedResourceDetails resource, OAuth2ClientContext clientContext, ClientHttpRequest req) { req.getHeaders() .set( "X-Authorization", clientContext.getAccessToken().getTokenType() + " " + "Nah-nah-na-nah-nah"); } }; customAuthenticator.authenticate(resource, restTemplate.getOAuth2ClientContext(), request); String auth = request.getHeaders().getFirst("X-Authorization"); assertEquals("access_token Nah-nah-na-nah-nah", auth); } }