Spring boot 针对Oauth2客户端调用的Spring Security Oauth2 Webclient设置失败,Oauth2.0访问令牌响应异常为空
我正在尝试设置一个基于Oauth2.0的webclient,基本上是一个应用到应用的身份验证,作为Oauth2客户端 因为这是一个两步过程-令牌https:///oauth/token/ 作为Netty响应的一部分给出以下响应(OAuth2AccessTokenResponse) 这是我使用此Oauth2“enabled”Webclient从服务类调用时得到的最后一个异常:Spring boot 针对Oauth2客户端调用的Spring Security Oauth2 Webclient设置失败,Oauth2.0访问令牌响应异常为空,spring-boot,spring-security,oauth-2.0,spring-security-oauth2,auth0,Spring Boot,Spring Security,Oauth 2.0,Spring Security Oauth2,Auth0,我正在尝试设置一个基于Oauth2.0的webclient,基本上是一个应用到应用的身份验证,作为Oauth2客户端 因为这是一个两步过程-令牌https:///oauth/token/ 作为Netty响应的一部分给出以下响应(OAuth2AccessTokenResponse) 这是我使用此Oauth2“enabled”Webclient从服务类调用时得到的最后一个异常:org.springframework.security.Oauth2.client.ClientAuthorization
org.springframework.security.Oauth2.client.ClientAuthorizationException:[invalid_token_response]Empty Oauth2.0访问令牌响应
spring:
security:
oauth2:
client:
provider:
auth0:
token-uri: https://<my-domain>/oauth/token/
registration:
auth0:
client-id: my-client-id
client-secret: my-client-secret
authorization-grant-type: client_credentials
spring:
安全:
oauth2:
客户:
供应商:
auth0:
令牌uri:https:///oauth/token/
注册:
auth0:
客户id:我的客户id
客户秘密:我的客户秘密
授权授予类型:客户端\u凭据
这是我得到的最后一个异常,而获取实际承载令牌的中间步骤是给我302状态码,没有真正的Oauth2承载令牌。请帮助我指出这里可能存在的问题
当我使用Oauth2RestTemplate尝试相同的凭据和设置时,它工作正常,让我使用生成的承载令牌执行Rest客户端调用。您的授权服务器使用什么?您是否试图将SpringSecurityOAuth扩展项目与SpringSecurity的内置OAuth支持结合使用?另外,请分享您的
Oauth2RestTemplate
配置,以便与WebClient
进行比较?
@Bean
WebClient getAppDevOauth2WebClient(ReactiveOAuth2AuthorizedClientManager reactiveOAuth2AuthorizedClientManager) {
ServerOAuth2AuthorizedClientExchangeFilterFunction oauth =
new ServerOAuth2AuthorizedClientExchangeFilterFunction(reactiveOAuth2AuthorizedClientManager);
// (optional) explicitly opt into using the oauth2Login to provide an access token implicitly
// oauth.setDefaultOAuth2AuthorizedClient(true);
oauth.setAuthorizationFailureHandler((oAuth2AuthorizationException,principal,attr) -> {
LOG.error("oAuth2AuthorizationException : {} and principal : {} and attr :{}"
, oAuth2AuthorizationException.getMessage(), principal.getName(),attr.toString());
return null;
});
oauth.setDefaultClientRegistrationId("auth0");
return WebClient.builder()
.filter(oauth)
.filter(logRequest())
.build();
}
@Bean
public ReactiveOAuth2AuthorizedClientManager authorizedClientManager(
ReactiveClientRegistrationRepository clientRegistrationRepository,
ReactiveOAuth2AuthorizedClientService authorizedClientService) {
ReactiveOAuth2AuthorizedClientProvider authorizedClientProvider =
ReactiveOAuth2AuthorizedClientProviderBuilder.builder()
.refreshToken()
.clientCredentials()
.build();
AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager authorizedClientManager =
new AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager(
clientRegistrationRepository, authorizedClientService);
authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);
return authorizedClientManager;
}
spring:
security:
oauth2:
client:
provider:
auth0:
token-uri: https://<my-domain>/oauth/token/
registration:
auth0:
client-id: my-client-id
client-secret: my-client-secret
authorization-grant-type: client_credentials