Я использую сервер ресурсов 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
Получаю ошибку при попытке сделать запрос на свой бэкэнд. Я использую Spring Boot с Oauth2, и каждый раз, когда я делаю ⇐ JAVA
Программисты JAVA общаются здесь
1771881200
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/protocol/openid-connect/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
Подробнее здесь: [url]https://stackoverflow.com/questions/79888992/getting-an-error-trying-to-make-a-request-to-my-backend-im-using-spring-boot-w[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия