gpt4 book ai didi

java - OAuth2RestTemplate 身份验证问题获取 access_denied

转载 作者:行者123 更新时间:2023-12-01 10:45:41 25 4
gpt4 key购买 nike

通过使用以下curl命令,我可以访问 token 并获得以下响应curl 用户名:密码@机器名:11002/appName/oauth/token -d grant_type=密码 -d 用户名=loginFormUserID -d 密码=loginFormUserPassword

响应:{ “实体 ID”:9, “实体类型”:“”, "refresh_token": "eyJhbGciOiJSUzI1NiJ9。", “范围”:“登录”, “过期时间”: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="请求访问 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未经授权 在 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 更多

最佳答案

您需要删除resource.setClientAuthenticationScheme(AuthenticationScheme.form);正确的形式是 AuthenticationScheme.header

ResourceOwnerPasswordResourceDetails 类扩展了 BaseOAuth2ProtectedResourceDetails,如果您看到此类,则值为 AuthenticationScheme.header

谢谢

关于java - OAuth2RestTemplate 身份验证问题获取 access_denied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34192631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com