2017-01-25 2 views

답변

0

나는 해결책을 찾아 냈다. 액세스 토큰을 사용자 지정하기 위해 사용자 액세스 토큰을 보호 할 수 있습니다. 토큰 향상 프로그램을 사용하여 액세스 토큰을 사용자 지정해야합니다.

@Primary 
    @Bean 
    public DefaultTokenServices defaultTokenServices() { 
     DefaultTokenServices defaultTokenServices = new DefaultTokenServices(); 
     defaultTokenServices.setTokenStore(tokenStore()); 
     defaultTokenServices.setTokenEnhancer(tokenEnhancer()); 
     defaultTokenServices.setSupportRefreshToken(true); 
     return defaultTokenServices; 
    } 

이하 및 사용자 정의 증강 내가 사용자 정의 액세스 토큰을 디코딩이 다른 방법에

public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) { 
    AppUserDetails appUserDetails = (AppUserDetails) authentication.getPrincipal(); 
    final Map<String, Object> additionalInfo = new HashMap<>(); 
    String encodedBytes = Base64.getEncoder().encodeToString(appUserDetails.getIdUser().toString().getBytes()); 
    additionalInfo.put("authorities", appUserDetails.getAuthorities()); 
    additionalInfo.put("username", appUserDetails.getUsername()); 
    additionalInfo.put("idUser", encodedBytes); 
    ((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo); 
    return accessToken; 
} 

처럼 될 것 같은 코드가 될 것입니다. 또한 AuthorizationServerEndpointsConfigurer를 사용했습니다.

@Override 
    //Configure the properties and enhanced functionality of the Authorization Server endpoints. 
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { 
     endpoints.tokenStore(tokenStore()).tokenEnhancer(tokenEnhancer()).authenticationManager(authenticationManager); 
    } 
0

사용자가 oauth2 인증을 사용하여 로그인 할 때마다 새로 로그인 한 사용자의 사용자 ID를 고유 한 access_token과 연결하고 해당 user_id를 가져 와서 현재 로그인 한 user_id로 매핑 할 수 있습니다 사용자가 자신의 access_token을 사용하고 있는지 확인하십시오.

관련 문제