【发布时间】:2019-01-31 02:33:56
【问题描述】:
尝试使用第 3 方提供商设置 oauth2 身份验证,但由于某种原因,它似乎没有将 client_id 传递给服务器。
@Bean(name = "oauth2RestTemplate")
public OAuth2RestTemplate oauth2RestTemplate() {
ArrayList<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
messageConverters.add(new MappingJackson2HttpMessageConverter(objectMapper()));
messageConverters.add(new ByteArrayHttpMessageConverter());
messageConverters.add(new StringHttpMessageConverter());
HttpComponentsClientHttpRequestFactory baseRequestFactory = new HttpComponentsClientHttpRequestFactory();
baseRequestFactory.setConnectTimeout(60000);
baseRequestFactory.setReadTimeout(60000);
BufferingClientHttpRequestFactory httpRequestFactory = new BufferingClientHttpRequestFactory(baseRequestFactory);
List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>();
interceptors.add(loggingRequestInterceptor());
OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(clientCredentialsResourceDetails(), oauth2Context());
restTemplate.setMessageConverters(messageConverters);
restTemplate.setRequestFactory(httpRequestFactory);
restTemplate.setInterceptors(interceptors);
return restTemplate;
}
@Bean
public OAuth2ClientContext oauth2Context()
{
OAuth2ClientContext context = new DefaultOAuth2ClientContext();
return context;
}
@Bean
public OAuth2ProtectedResourceDetails clientCredentialsResourceDetails()
{
ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails();
resourceDetails.setAccessTokenUri(uri");
resourceDetails.setClientId("client_id");
resourceDetails.setClientSecret("clientsecret");
return resourceDetails;
}
获取 OAuth2AccessDeniedException error="access_denied", error_description="访问令牌被拒绝。"
error="invalid_client", error_description="client_id was not provided", code="62", correlationid="e0efacc2-4829-4dd7-8296-48c222992a84"
【问题讨论】:
-
升级spring、http客户端版本后问题已修复
标签: java spring-security spring-security-oauth2