Проблема возникает, когда я использую super.enhance (token, auth) в операторе return при переопределении метода Enhancement () JwtAccessTokenConverter.Работает нормально, только когда возвращаю токен.Но дополнительная информация отображается только в теле ответа службы / oauth / token, а не в полезной нагрузке JWT.
И когда я возвращаю super.enhance (токен, аутентификация), дополнительная информация добавляется в полезную нагрузку JWT (Я проверил на jwt.io).Но теперь токен не разбирается.
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
TokenEnhancerChain enhancerChain = new TokenEnhancerChain();
enhancerChain.setTokenEnhancers(Arrays.asList(accessTokenConverter(), xyAuthTokenEnhancer2));
endpoints
.tokenStore(tokenStore())
.accessTokenConverter(accessTokenConverter())
.authenticationManager(this.authenticationManager)
.userDetailsService(userDetailsService);
}
Я пытаюсь расширить токен доступа следующим образом:
@Configuration
@Component
public class CustomJwtConverter extends JwtAccessTokenConverter {
@Override
public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
Map<String, Object> additionalInfo = new HashMap<>();
XYUser user = (XYUser) authentication.getPrincipal();
additionalInfo.put("userId", user.getUserId());
additionalInfo.put("firstName", user.getFirstName());
additionalInfo.put("lastName", user.getLastName());
additionalInfo.put("companyId", user.getCompanyId());
((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);
return super.enhance(accessToken, authentication);
}
}
Итак, помогите, пожалуйста.почему токен не разбирается после улучшения и как это исправить?и я следовал этому руководству: Spring Cloud Security с OAuth2