我们能够使用附加的代码快照获取访问 token ,但没有找到任何方法来设置连接超时,就像我们使用 Spring RestTemplate 所做的那样。有没有办法使用 OAuth2RestTemplate 设置连接超时。
<bean id="bean" class="com.test.Provider">
<constructor-arg name="context" ref="context" />
<constructor-arg name="detail" ref="resourceDetails" />
</bean>
<bean id="context" class="org.springframework.security.oauth2.client.DefaultOAuth2ClientContext">
<constructor-arg name="accessTokenRequest" ref="request" />
</bean>
<bean id="request" class="org.springframework.security.oauth2.client.token.DefaultAccessTokenRequest"/>
<bean id="resourceDetails" class="org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails"/>
最佳答案
有点晚了,但如果你想知道如何使用 springboot 做到这一点,这是一种方法:
@Bean
protected OAuth2RestTemplate oauth2RestTemplate(ClientHttpRequestFactory clientHttpRequestFactory) {
OAuth2RestTemplate oAuth2RestTemplate = new OAuth2RestTemplate(oAuthDetails());
oAuth2RestTemplate.setRequestFactory(clientHttpRequestFactory);
return oAuth2RestTemplate;
}
@Bean
protected ClientHttpRequestFactory requestFactory() {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(10000); //timeout in milliseconds
requestFactory.setReadTimeout(10000); //timeout in milliseconds
return requestFactory;
}
其中oAuthDetails()
是读取oauth配置属性的方法,类似于:
@Bean
@ConfigurationProperties("path.to.your.oauth.properties.on.yml")
protected ClientCredentialsResourceDetails oAuthDetails() {
return new ClientCredentialsResourceDetails();
}
关于spring-oauth2 - 如何在获取访问 token 时使用 OAuth2RestTemplate 设置连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54085582/