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