【发布时间】:2022-01-23 19:27:43
【问题描述】:
我正在使用 Java 11 和 Spring Boot 中的 OAuth2 授权实现 WebClient。授权服务使用令牌响应 200,但随后显示以下错误:"[invalid_token_response] An error occurred parsing the Access Token response: Token type must be Bearer"
我的 WebClient 配置:
@Bean
public ReactiveClientRegistrationRepository clientRegistrations(
@Value("${spring.security.oauth2.client.provider.apigee.token-uri}") String tokenUri,
@Value("${spring.security.oauth2.client.registration.apigee.client-id}") String clientId,
@Value("${spring.security.oauth2.client.registration.apigee.client-secret}") String clientSecret,
@Value("${spring.security.oauth2.client.registration.apigee.scope}") String scope,
@Value("${spring.security.oauth2.client.registration.apigee.authorization-grant-type}") String authorizationGrantType) {
ClientRegistration registration = ClientRegistration
.withRegistrationId(REGISTRATION_ID)
.tokenUri(tokenUri)
.clientId(clientId)
.clientSecret(clientSecret)
.scope(scope)
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST)
.authorizationGrantType(new AuthorizationGrantType(authorizationGrantType))
.build();
return new InMemoryReactiveClientRegistrationRepository(registration);
}
@Bean
public WebClient webClient(ReactiveClientRegistrationRepository clientRegistrations) {
InMemoryReactiveOAuth2AuthorizedClientService clientService = new InMemoryReactiveOAuth2AuthorizedClientService(clientRegistrations);
AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager authorizedClientManager = new AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager(
clientRegistrations, clientService);
ServerOAuth2AuthorizedClientExchangeFilterFunction oauth = new ServerOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager);
oauth.setDefaultClientRegistrationId(REGISTRATION_ID);
return WebClient.builder()
.filter(oauth)
.build();
}
还有属性
spring.security.oauth2.client.registration.apigee.client-id=client-id
spring.security.oauth2.client.registration.apigee.client-secret=client-secret
spring.security.oauth2.client.registration.apigee.authorization-grant-type=client_credentials
spring.security.oauth2.client.registration.apigee.client-authentication-method=client_secret_post
spring.security.oauth2.client.registration.apigee.scope=write,read
spring.security.oauth2.client.provider.apigee.token-uri=https://host/v1/authorization
【问题讨论】:
标签: java oauth-2.0 webclient spring-security-oauth2 spring-webclient