Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在OAuthRestTemplate、spring security oauth上手动设置访问令牌?_Java_Spring_Spring Security Oauth2 - Fatal编程技术网

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

Java 如何在OAuthRestTemplate、spring security oauth上手动设置访问令牌?,java,spring,spring-security-oauth2,Java,Spring,Spring Security Oauth2,我试图使用SpringSecurityOAuth中的OAuthRestTemplate调用使用OAuth1A的api 我看到大多数示例都设置了使用者密钥和密码,然后让库获取访问令牌。 我有令牌和令牌密钥(不会过期),我想在OAuthRestTemplate上设置它们并进行调用,而不需要通过身份验证流 可能吗?如果是,怎么做?恐怕这是不可能的(这是在OAuth2方面,但OAuth1从未得到过这么多的爱)。感谢您的贡献。这是可能的,尽管有点不成熟。示例代码如下: // Assume you

我试图使用SpringSecurityOAuth中的
OAuthRestTemplate
调用使用OAuth1A的api

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


可能吗?如果是,怎么做?

恐怕这是不可能的(这是在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);
//假设您有一个预配置的RestTemplate
OAuthRestTemplate=新的OAuthRestTemplate(资源);
OAuthConsumerToken accessToken=新的OAuthConsumerToken();
setAccessToken(true);
accessToken.setResourceId(template.getResource().getId());
accessToken.setValue(访问令牌);
OAuthSecurityContextImpl securityContext=新的OAuthSecurityContextImpl();
setAccessTokens(新的HashMap());
securityContext.getAccessTokens().put(accessToken.getResourceId(),accessToken);
setContext(securityContext);

理想情况下,您应该检查是否存在现有的安全上下文,如果令牌尚未出现,请将其添加到映射中。

@DaveSyer-我是否正确地假设
OAuthSecurityContextHolder
的行为类似于
SecurityContextHolder
,因为任何机制都可以自由写入该令牌?您能告诉我如何使用OAuth2实现这一点吗?我现在正在寻找,结果就在这里。