У меня есть служба аутентификации с AuthorizationServer, которая создает токен JWT, и в той же службе, что и у меня, и ResourceServer. Когда я запускаю сервис и пытаюсь получить доступ к токену, думал Почтальон, он возвращает токен JWT. После этого, когда я пытаюсь достичь на этом сервисе конечной точки "/ home", которая требует "аутентификации", она работает идеально.
Моя проблема заключается в том, как сделать клиент oauth2 шлюза Spring Cloud Gateway и когда я пытаюсь достичь какой-либо конечной точки с токеном носителя для аутентификации запроса через службу аутентификации. Я борюсь много времени и не могу найти правильное решение для меня.
Мой Сервер авторизации:
@Configuration
@EnableAuthorizationServer
public class AuthorizationServer extends AuthorizationServerConfigurerAdapter {
private static final String ID_CLIENT = "client";
private static final String SECRET = "secret";
private static final String AUTHORIZATION_CODE = "authorization_code";
private static final String SCOPE = "user_info";
private static final String TOKEN_KEY_ACCESS = "permitAll()";
private static final String CHECK_TOKEN_ACCESS = "isAuthenticated()";
private static final String SIGNING_KEY = "privateKey";
private static final String PASSWORD = "password";
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private PasswordEncoder passwordEncoder;
@Override
public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
security.tokenKeyAccess(TOKEN_KEY_ACCESS)
.checkTokenAccess(CHECK_TOKEN_ACCESS);
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients
.inMemory()
.withClient(ID_CLIENT)
.secret(passwordEncoder.encode(SECRET))
.autoApprove(true)
.authorizedGrantTypes(AUTHORIZATION_CODE, PASSWORD)
.scopes(SCOPE)
.accessTokenValiditySeconds(20000)
.refreshTokenValiditySeconds(20000);
}
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints
.authenticationManager(authenticationManager)
.tokenStore(tokenStore())
.accessTokenConverter(tokenConverter());
}
@Bean
public JwtAccessTokenConverter tokenConverter() {
JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
converter.setSigningKey(SIGNING_KEY);
converter.setVerifierKey(SIGNING_KEY);
return converter;
}
@Bean
public JwtTokenStore tokenStore() {
return new JwtTokenStore(tokenConverter());
}
}
My ResourcesServer
@Configuration
@EnableResourceServer
public class ResourcesServer extends ResourceServerConfigurerAdapter {
private static final String CLIENT_ID = "clientId";
private static final String SECRET = "secret";
private static final String TOKEN_ENDPOINT_URL = "http://localhost:9004/oauth/check_token";
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
resources.tokenServices(tokenServices());
}
@Bean
public RemoteTokenServices tokenServices() {
RemoteTokenServices tokenServices = new RemoteTokenServices();
tokenServices.setCheckTokenEndpointUrl(TOKEN_ENDPOINT_URL);
tokenServices.setClientId(CLIENT_ID);
tokenServices.setClientSecret(SECRET);
return tokenServices;
}
}
У меня есть и WebSecurityConfiguration с аутентификацией LDAP ...