【发布时间】:2016-03-15 13:00:26
【问题描述】:
通过使用以下 curl 命令,我可以访问令牌并获得以下响应 curl 用户名:password@machinename:11002/appName/oauth/token -d grant_type=password -d username=loginFormUserID -d password=loginFormUserPassword
响应:{ “实体 ID”:9, “实体类型”:“”, "refresh_token" : "eyJhbGciOiJSUzI1NiJ9.", “范围”:“登录”, “expires_in”:3599, “实体名称”:“名称”, “access_token”:“eyJhbGciOiJSUzI1NiJ9.ey”, “token_type”:“持票人” }
如果我将使用 spring OAuth2RestTemplate 我将被拒绝访问,这是我的代码详细信息
ResourceOwnerPasswordAccessTokenProvider provider = new ResourceOwnerPasswordAccessTokenProvider();
ResourceOwnerPasswordResourceDetails resource = new ResourceOwnerPasswordResourceDetails();
resource.setClientAuthenticationScheme(AuthenticationScheme.form);
resource.setAccessTokenUri("http://machinename:11002/appName/oauth/token");
resource.setClientId("loginFormUserID");
resource.setClientSecret("loginFormUserPassword");
resource.setGrantType("password");
resource.setUsername("username");
resource.setPassword("password");
OAuth2AccessToken accessToken = provider.obtainAccessToken(resource, new DefaultAccessTokenRequest());
OAuth2RestTemplate restTemplateQ = new OAuth2RestTemplate(resource, new DefaultOAuth2ClientContext(accessToken));
System.out.println( restTemplateQ.getAccessToken());
线程“main”中的异常 error="access_denied", error_description="Error requesting access token." 在 org.springframework.security.oauth2.client.token.OAuth2AccessTokenSupport.retrieveToken(OAuth2AccessTokenSupport.java:145) 在 org.springframework.security.oauth2.client.token.grant.password.ResourceOwnerPasswordAccessTokenProvider.obtainAccessToken(ResourceOwnerPasswordAccessTokenProvider.java:47) 在 com.copart.g1.seller.middleware.client.RestTemplateTest.main(RestTemplateTest.java:55) 引起:org.springframework.web.client.HttpClientErrorException: 401 Unauthorized 在 org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91) 在 org.springframework.security.oauth2.client.token.OAuth2AccessTokenSupport$AccessTokenErrorHandler.handleError(OAuth2AccessTokenSupport.java:244) 在 org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:641) 在 org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:597) 在 org.springframework.web.client.RestTemplate.execute(RestTemplate.java:565) 在 org.springframework.security.oauth2.client.token.OAuth2AccessTokenSupport.retrieveToken(OAuth2AccessTokenSupport.java:137) ... 2 更多
【问题讨论】:
标签: java spring spring-security oauth-2.0