【发布时间】:2018-02-03 15:21:43
【问题描述】:
我想用 Spring oauth2 客户端包交换刷新和访问令牌的授权代码。我的代码如下:
public static void main(String[] args) {
AuthorizationCodeResourceDetails resource = new AuthorizationCodeResourceDetails();
resource.setUserAuthorizationUri("http://localhost:8080/oauth/authorize");
resource.setAccessTokenUri("http://localhost:8080/oauth/token");
resource.setClientId("my-client-with-secret");
resource.setClientSecret("secret");
AccessTokenRequest request = new DefaultAccessTokenRequest();
request.setAuthorizationCode("o9subu");
AuthorizationCodeAccessTokenProvider provider = new AuthorizationCodeAccessTokenProvider();
OAuth2AccessToken accessToken = provider.obtainAccessToken(resource, request);
System.out.println(accessToken.getValue());
}
提供程序来自https://github.com/spring-projects/spring-security-oauth/tree/master/tests/annotation/approval,当我直接调用提供程序时,我已经从浏览器中获取了临时 oauth2 代码。
错误信息是
线程 "main" error="invalid_request", error_description="检测到可能的 CSRF - 需要状态参数但找不到状态" 在 org.springframework.security.oauth2.client.token.grant.code.AuthorizationCodeAccessTokenProvider.getParametersForTokenRequest(AuthorizationCodeAccessTokenProvider.java:255) 在 org.springframework.security.oauth2.client.token.grant.code.AuthorizationCodeAccessTokenProvider.obtainAccessToken(AuthorizationCodeAccessTokenProvider.java:209)
我还是想自己申请access_token和secret_token,因为我是从其他系统获取的oauth2代码。
【问题讨论】:
标签: java spring spring-security oauth