Когда я пытаюсь сделать запрос к серверной части Java, защищенной ключом BE с OAUTH, я получаю следующую ошибку:
Код: Выделить всё
InvalidBearerTokenException: Invalid issuer
Я рассмотрел этот и этот вопросы и попытался реализовать некоторые решения, но безрезультатно. Возможно, я их не понимаю.
Я пытался установить KEYCLOAK_FRONTEND_URL на панели администратора для IP-адреса шлюза API, но это не позволяет мне получить токен доступа в почтальоне, он будет перенаправляться на этот IP-адрес и прерывать поток аутентификации.
Я также пытался установить это:
Код: Выделить всё
PROXY_ADDRESS_FORWARDING: "true"
KEYCLOAK_FRONTEND_URL: "https://example.com/auth"
Может ли кто-нибудь сказать мне, что я делаю неправильно, и указать мне правильное направление? Сообщите мне, если вам нужна дополнительная информация.
Вот как выглядит мой фильтр безопасности на серверной стороне:
Код: Выделить всё
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeHttpRequests(authorize -> {
try {
authorize
.antMatchers(HttpMethod.DELETE, "/development/deleteAllUsers").permitAll()
.mvcMatchers(HttpMethod.POST, "/createUser").permitAll()
.mvcMatchers(HttpMethod.GET,"/test").permitAll()
.anyRequest().authenticated();
} catch (Exception e) {
throw new RuntimeException(e);
}
})
.oauth2ResourceServer(
oauth2 -> oauth2.authenticationManagerResolver(getJwtIssuerAuthenticationManagerResolver()));
http.headers()
.xssProtection()
.disable()
.frameOptions()
.deny()
.contentSecurityPolicy("default-src 'self'");
return http.build();
}
@Bean("CurrentUser")
public Supplier currentUser() {
return () -> (JwtAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
}
private JwtIssuerAuthenticationManagerResolver getJwtIssuerAuthenticationManagerResolver() {
Map managers = providersProperty.getProviders()
.values()
.stream()
.collect(Collectors.toMap(p -> p.getIssuerUri(),
p -> jwtProviderStrategy.getProvider(p.getKey())::authenticate));
return new JwtIssuerAuthenticationManagerResolver(managers::get);
}
Код: Выделить всё
jwk-set-uri: http://${KEYCLOAK_HOST:localhost}:${KEYCLOAK_PORT:8180}/auth/realms/myrealm/protocol/openid-connect/certs
issuer-uri: http://${KEYCLOAK_HOST:localhost}:${KEYCLOAK_PORT:8180}/auth/realms/myrealm
Подробнее здесь: https://stackoverflow.com/questions/772 ... lid-issuer
Мобильная версия