/ / Как да реализирам безвъзмездната помощ на client_credentials за моя клиент OAuth2 - java, spring-security-oauth2, oauth2client

Как да внедря гранта client_credentials за моя клиент OAuth2 - java, spring-security-oauth2, oauth2client

Наскоро внедрявах безвъзмездната помощ на client_credentials за моя доставчик на OAuth2, която се основава на пролетна сигурност OAuth2. След това се преместих при клиента, за да внедря механизма там. Добавих @EnableOAuth2Client пояснение и задайте следната конфигурация:

spring:
oauth2:
client:
id: myResource
clientId: myClientId
clientSecret: myClientSecret
accessTokenUri: http://localhost:8080/oauth/token
grantType: client_credentials

Не ми е ясно защо трябва да добавя настройката за идентификатор. Според съобщението за грешка, който мениджърът на доставчика трябва да го поддържа. Това е грешката, която получавам:

Невъзможно е да се получи нов маркер за достъп до ресурс "myResource". Мениджърът на доставчика не е конфигуриран да го поддържа.

След като потърсих в интернет известно време, открих това Трябва да добавя глобален сървлет на DelegatingFilterProxy, който делегира на боб с име „oauth2ClientContextFilter“

https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/main/java/org/springframework/security/oauth2/config/annotation/web/configuration/EnableOAuth2Client.java

Намерих някои реализации за това как да направя това, но всички те използват XML вместо пояснения за задаване на тяхната конфигурация.

<filter>
<filter-name>myFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#delegating-filter-proxy

И така в заключение:

  1. Това правилен подход ли е за настройка на безвъзмездната помощ за клиент-клиент за моя клиент OAuth2?
  2. Как мога да настроя DelegatingFilterProxy с помощта на пояснения, както е посочено в клас @ EnableOAuth2Client?
  3. Защо е необходимо да се делегира на боб с име "oauth2ClientContextFilter"?

Благодаря предварително

Отговори:

0 за отговор № 1

Така успях да отстраня проблема си.
След като задържах това за малко, го опитах.
Изглежда, че използвам грешен клас ResourceDetails за моя OAuth2RestTemplate.
Заместване

AuthorizationCodeResourceDetails resource = new AuthorizationCodeResourceDetails();

с

ClientCredentialsResourceDetails resource = new ClientCredentialsResourceDetails();

реши проблема.