public void removeAccessTokenUsingRefreshToken(String refreshToken) { String tokenId = null; try { tokenId = dynamoDBTemplate.queryUnique( schema.getAccessTableName(), schema.getAccessIndexRefreshToken(), // Collections.singletonMap( schema.getAccessColumnRefreshToken(), new Condition() .withAttributeValueList(new AttributeValue(extractTokenKey(refreshToken))) .withComparisonOperator(ComparisonOperator.EQ)), // new ObjectExtractor<String>() { public String extract(Map<String, AttributeValue> values) { return values.get(schema.getAccessColumnTokenId()).getS(); } }, schema.getAccessColumnTokenId()); } catch (EmptyResultDataAccessException | IncorrectResultSizeDataAccessException e) { if (LOG.isDebugEnabled()) { LOG.debug("Failed to find access token for refresh token " + refreshToken); } } if (tokenId == null) { return; } dynamoDBTemplate.delete( schema.getAccessTableName(), Collections.singletonMap(schema.getAccessColumnTokenId(), new AttributeValue(tokenId))); }
public OAuth2AccessToken getAccessToken(OAuth2Authentication authentication) { OAuth2AccessToken accessToken = null; String key = authenticationKeyGenerator.extractKey(authentication); try { String accessTokenId = dynamoDBTemplate.queryUnique( schema.getAccessTableName(), schema.getAccessIndexAuthenticationId(), // Collections.singletonMap( schema.getAccessColumnAuthenticationId(), new Condition() .withComparisonOperator(ComparisonOperator.EQ) .withAttributeValueList(new AttributeValue(key))), // new ObjectExtractor<String>() { public String extract(Map<String, AttributeValue> values) { return values.get(schema.getAccessColumnTokenId()).getS(); } }); accessToken = dynamoDBTemplate.get( schema.getAccessTableName(), Collections.singletonMap( schema.getAccessColumnTokenId(), new AttributeValue(accessTokenId)), new ObjectExtractor<OAuth2AccessToken>() { public OAuth2AccessToken extract(Map<String, AttributeValue> values) { return deserializeAccessToken(values.get(schema.getAccessColumnToken()).getB()); } }); } catch (EmptyResultDataAccessException | IncorrectResultSizeDataAccessException e) { if (LOG.isDebugEnabled()) { LOG.debug("Failed to find access token for authentication " + authentication); } } catch (IllegalArgumentException e) { LOG.error("Could not extract access token for authentication " + authentication, e); } if (accessToken != null && !key.equals( authenticationKeyGenerator.extractKey(readAuthentication(accessToken.getValue())))) { // Keep the store consistent (maybe the same user is represented by this authentication but // the details have // changed) storeAccessToken(accessToken, authentication); } return accessToken; }