【发布时间】:2016-04-10 21:17:48
【问题描述】:
我试图寻找解决方案很长时间,但没有发现任何有用的东西。 现在,直截了当。
我必须使用远程 OAuth2 身份验证服务器,并且我有使用它的凭据。身份验证用于 REST 服务调用。 REST 服务每隔 15 分钟被调用一次,我们的应用程序在一次迭代中调用了多个 URL。
第一次调用 REST API,一切正常,我们得到了访问令牌,它很有用。 1 小时后,当访问令牌过期并再次调用 REST API 时,我们收到以下错误:
The access token provided has expired
此错误有时会显示一次,有时会显示两次或更多。 再过 15 分钟 REST API 调用再次无错误。
我尝试使用属性retryBadAccessTokens,但没有运气。
我们正在使用 spring-security-oauth2-2.0.8.RELEASE 并进行以下设置:
<bean id="oipRestTemplate" class="org.springframework.security.oauth2.client.OAuth2RestTemplate" scope="prototype">
<constructor-arg ref="oipClientCredentialsResourceDetail"/>
<property name="accessTokenProvider" ref="tokenProvider"/>
<property name="requestFactory" ref="httpComponentsClientHttpRequestFactory"/>
<property name="retryBadAccessTokens" value="true"/>
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" >
<property name="supportedMediaTypes">
<list>
<bean class="org.springframework.http.MediaType">
<constructor-arg value="application" />
<constructor-arg value="json" />
</bean>
</list>
</property>
</bean>
</list>
</property>
<property name="errorHandler">
<bean class="our.company.app.holders.MyResponseErrorHandler" />
</property>
</bean>
【问题讨论】:
标签: rest oauth-2.0 spring-security-oauth2