Наскоро внедрявах безвъзмездната помощ на 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“
Намерих някои реализации за това как да направя това, но всички те използват 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>
И така в заключение:
- Това правилен подход ли е за настройка на безвъзмездната помощ за клиент-клиент за моя клиент OAuth2?
- Как мога да настроя DelegatingFilterProxy с помощта на пояснения, както е посочено в клас @ EnableOAuth2Client?
- Защо е необходимо да се делегира на боб с име "oauth2ClientContextFilter"?
Благодаря предварително
Отговори:
0 за отговор № 1Така успях да отстраня проблема си.
След като задържах това за малко, го опитах.
Изглежда, че използвам грешен клас ResourceDetails за моя OAuth2RestTemplate.
Заместване
AuthorizationCodeResourceDetails resource = new AuthorizationCodeResourceDetails();
с
ClientCredentialsResourceDetails resource = new ClientCredentialsResourceDetails();
реши проблема.