Получаю ошибку при попытке сделать запрос на свой бэкэнд. Я использую Spring Boot с Oauth2, и каждый раз, когда я делаю JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Получаю ошибку при попытке сделать запрос на свой бэкэнд. Я использую Spring Boot с Oauth2, и каждый раз, когда я делаю

Сообщение Anonymous »

Я использую сервер ресурсов Oauth2, потому что запрос будет поступать от FrontEnd. Я никогда раньше не видел этой ошибки и пытаюсь выполнить отладку, но это не работает. Сначала я думал, что это пришло от cors, но это не так, через некоторое время я попытался сделать запрос через Postman, но все равно не получилось. Я использую Jose для декодирования и проверки токена.
Ошибка
java.lang.IncompatibleClassChangeError: Class org.springframework.http.HttpHeaders does not implement the requested interface org.springframework.util.MultiValueMap
at org.springframework.http.HttpHeaders.isEmpty(HttpHeaders.java:1897) ~[spring-web-7.0.3.jar:7.0.3]
at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:947) ~[spring-web-7.0.3.jar:7.0.3]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:752) ~[spring-web-7.0.3.jar:7.0.3]
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:619) ~[spring-web-7.0.3.jar:7.0.3]
at org.springframework.security.oauth2.jwt.NimbusJwtDecoder$JwkSetUriJwtDecoderBuilder$SpringJWKSource.fetchJwks(NimbusJwtDecoder.java:501) ~[spring-security-oauth2-jose-6.5.5.jar:6.5.5]
at org.springframework.cache.support.NoOpCache.get(NoOpCache.java:76) ~[spring-context-7.0.3.jar:7.0.3]
at org.springframework.security.oauth2.jwt.NimbusJwtDecoder$JwkSetUriJwtDecoderBuilder$SpringJWKSource.getJWKSet(NimbusJwtDecoder.java:515) ~[spring-security-oauth2-jose-6.5.5.jar:6.5.5]
at com.nimbusds.jose.jwk.source.CachingJWKSetSource.loadJWKSetNotThreadSafe(CachingJWKSetSource.java:330) ~[nimbus-jose-jwt-9.37.4.jar:9.37.4]

yaml приложения
spring:
security:
oauth2:
resourceserver:
jwt:
issuer-uri: http://localhost:8080/realms/master
jwk-set-uri: http://localhost:8080/realms/master/pro ... nect/certs

securityChain
@Configuration
@EnableWebSecurity
public class SecurityConfig {

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) {
return httpSecurity
.csrf(AbstractHttpConfigurer::disable)
.cors(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
.oauth2ResourceServer(oauth2 -> oauth2
.jwt(Customizer.withDefaults()))
.build();
}

Контроллер
@RestController
@RequestMapping("/create")
public class Controller {

@GetMapping
public String greet() {
return "hello";
}
}

Служба API Angular
export class ApiService {

private http = inject(HttpClient)

getGreet(): Observable {
const headers = new HttpHeaders().set('Content-Type', 'text/plain; charset=utf-8');
return this.http.get("http://localhost:8081/create",
{headers, responseType: 'text'});
}
}

Конфигурация приложения Angular
export const appConfig: ApplicationConfig = {
providers: [
provideBrowserGlobalErrorListeners(),
provideRouter(routes), provideClientHydration(withEventReplay()),
provideOAuthClient(),
provideHttpClient(),
provideClientHydration(),
importProvidersFrom(
OAuthModule.forRoot({
resourceServer: {
allowedUrls: ['http://localhost:8081/create'],
sendAccessToken: true
}
}),
)
]
};

Пом

org.springframework.boot
spring-boot-starter-security-oauth2-resource-server



org.springframework.security
spring-security-oauth2-jose
6.5.5
compile



Подробнее здесь: https://stackoverflow.com/questions/798 ... ing-boot-w
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»