如何在OAuthRestTemplate,spring-security-oauth上手动设置访问令牌?

时间:2014-04-28 12:44:52

标签: java spring spring-security-oauth2

我正在尝试使用spring-security-oauth中的OAuthRestTemplate来调用使用Oauth 1a的api。

我看到大多数示例都设置了使用者密钥和密钥,然后让库获取访问令牌。 我有令牌和令牌密码(它没有过期),我想在OAuthRestTemplate上设置它们并进行调用,而无需通过身份验证流程。

这可能吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:1)

AFAIK是不可能的(它在OAuth2方面,但OAuth1从来没有得到那么多的爱)。捐款感激不尽。

答案 1 :(得分:0)

这是可能的,虽然有点hacky。示例代码如下:

    // 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);

理想情况下,您应该检查现有的安全上下文是否存在,并将该令牌添加到地图中(如果它尚未存在)。