我正在尝试使用OAuthRestTemplate
spring-security-oauth 调用使用 Oauth 1a 的 api。
我看到大多数示例设置了使用者密钥和秘密,然后让库获取访问令牌。我有令牌和令牌机密(不会过期),我想在 OAuthRestTemplate 上设置它们并进行调用,而无需通过身份验证流程。
那可能吗?如果是这样,如何?
我正在尝试使用OAuthRestTemplate
spring-security-oauth 调用使用 Oauth 1a 的 api。
我看到大多数示例设置了使用者密钥和秘密,然后让库获取访问令牌。我有令牌和令牌机密(不会过期),我想在 OAuthRestTemplate 上设置它们并进行调用,而无需通过身份验证流程。
那可能吗?如果是这样,如何?
AFAIK 这是不可能的(它在 OAuth2 方面,但 OAuth1 从未得到如此多的爱)。捐款被欣然接受。
这是可能的,虽然有点老套。下面的示例代码:
// Assume you have a preconfigured RestTemplate
OAuthRestTemplate template = new OAuthRestTemplate(resource);
OAuthConsumerToken accessToken = new OAuthConsumerToken();
accessToken.setAccessToken(true);
accessToken.setResourceId(template.getResource().getId());
accessToken.setValue(ACCESS_TOKEN);
OAuthSecurityContextImpl securityContext = new OAuthSecurityContextImpl();
securityContext.setAccessTokens(new HashMap<>());
securityContext.getAccessTokens().put(accessToken.getResourceId(), accessToken);
OAuthSecurityContextHolder.setContext(securityContext);
理想情况下,您应该检查是否存在现有的安全上下文,如果不存在,则将令牌添加到映射中。