Я использую сервер аутентификации OAUTH2 с JWT.Если я использую токен inMemory (), я получаю доступ нормально.Однако, если я использую jdbc (dataSource), он всегда возвращает ошибку 401. Может ли кто-нибудь помочь?
Мой AuthorizationServerConfigurerAdapter
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.tokenStore(tokenStore()).authenticationManager(authenticationManager)
.tokenEnhancer(jwtAccessTokenConverter()).userDetailsService(userDetailsService)
.requestFactory(customOauth2RequestFactory.requestFactory());
}
Мой tokenStore
@Bean
public TokenStore tokenStore() {
return new JwtTokenStore(jwtAccessTokenConverter());
}
И мой jwtAccessTokenConverter
@Bean
public JwtAccessTokenConverter jwtAccessTokenConverter() {
var converteToken = new CustomToken();
converteToken.setKeyPair(new KeyStoreKeyFactory(new ClassPathResource("jwt.jks"), "password".toCharArray())
.getKeyPair("jwt"));
return converteToken;
}
И мой CustomToken расширяет, расширяет JwtAccessTokenConverter
@Override
public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
var user = userRepository.findByLogin(authentication.getName());
Map<String, Object> additionalInformation = new HashMap<>() {{
put("idFuncionario", usuario.getIdFuncionario());
put("idEmpresa", usuario.getIdEmpresa());
put("perfis", usuario.descricaoPerfil());
put("login", usuario.getLogin());
}};
var defaultOAuth2AccessToken = new DefaultOAuth2AccessToken(accessToken);
defaultOAuth2AccessToken.setAdditionalInformation(additionalInformation);
return super.enhance(defaultOAuth2AccessToken, authentication);
}
Теперь мой JDBC в AuthorizationServerConfigurerAdapter
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.jdbc(dataSource).passwordEncoder(passwordEncoder());
}
И моя CustomFactory расширяет DefaultOAuth2RequestFactory *
И мой JWT ENTITY
@Entity
@Table(name = "oauth_client_details")
public class OAuthClientDetails extends AbstractEntity {
private String clientId;
private String clientSecret;
private String resourceIds;
private String scope;
private String authorizedGrantTypes;
private String webServerRedirectUri;
private String authorities;
private Integer accessTokenValidity;
private Integer refreshTokenValidity;
private String additionalInformation;
private String autoapprove;
contructor / geters / seters