Spring HTTP状态-401未经授权
我试图将curl代码转换为java代码,目的是调用API来创建令牌,但得到了401响应 卷曲代码:Spring HTTP状态-401未经授权,spring,rest,api,oauth-2.0,Spring,Rest,Api,Oauth 2.0,我试图将curl代码转换为java代码,目的是调用API来创建令牌,但得到了401响应 卷曲代码: curl -X POST \ https://apigw.dev/commercial/oauth/create-token \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'client_id=dfdfdfdfd&client_secret=dfdfdf&grant_type=client_cre
curl -X POST \
https://apigw.dev/commercial/oauth/create-token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'client_id=dfdfdfdfd&client_secret=dfdfdf&grant_type=client_credentials'
下面是我的java代码:
@RestController
public class TokenController {
@RequestMapping(value = "/getAccessToken", method = RequestMethod.POST)
public ClientCredentialsResourceDetails getAccessToken(ClientCredentialsResourceDetails resource) throws Exception {
resource.setAccessTokenUri(tokenUri);
resource.setClientId(clientId);
resource.setClientSecret(clientSecret);
resource.setGrantType("client_credentials");
resource.setClientAuthenticationScheme(AuthenticationScheme.header);
resource.setScope(Arrays.asList("read", "write"));
System.out.println(resource);
return resource;
}
}
结果如下:
"timestamp": "2020-04-28T14:02:28.381+0000",
"status": 401,
"error": "Unauthorized",
"message": "Unauthorized",
"path": "/getAccessToken"
}
我非常感谢您的建议,提前谢谢。您正在使用CURL发出POST请求,但您的rest控制器配置为GET。我猜您有另一个端点到/getAccessToken,它使用POST方法,该方法需要令牌。 另外,默认情况下,
@RestController
类中的每个方法都将使用应用程序/json
,并生成应用程序/json
。
如果您的请求是
内容类型:application/x-www-form-urlencoded
,请将请求的消费类型更改为MediaType。application\u form\u urlencoded\u VALUE
您正在使用CURL发出POST请求,但您的rest控制器配置为GET。我猜您有另一个端点到/getAccessToken,它使用POST方法,该方法需要令牌。
另外,默认情况下,@RestController
类中的每个方法都将使用应用程序/json
,并生成应用程序/json
。
如果您的请求是
内容类型:application/x-www-form-urlencoded
,请将请求的消费类型更改为MediaType。application\u form\u urlencoded\u VALUE
不清楚您试图做什么-您是为公共API编写客户端还是自己创建客户端(如果不是,那么create token
端点的用途是什么)。您还应该删除您的客户端ID和密码。我已经解决了我的问题,我想这很清楚。您可以建议我吗。在我看来,您的spring security处于活动状态,并且spring security正在保护getAccessToken端点。您需要设置安全性,或者指示spring security允许对/getAccessToken的所有访问。我已配置e spring安全,但响应变为403。{“时间戳”:“2020-04-29T02:45:26.770+0000”,“状态”:403,“错误”:“禁止”,“消息”:“禁止”,“路径”:“/getAccessToken”}因此,打开spring security debug logging,看看它在抱怨什么。不清楚您在尝试做什么-您是为公共API编写客户端还是自己创建客户端(如果不是,那么create token
端点的用途是什么)。您还应该删除您的客户端ID和密码。我已经解决了我的问题,我想这很清楚。您可以建议我吗。在我看来,您的spring security处于活动状态,并且spring security正在保护getAccessToken端点。您需要设置安全性,或者指示spring security允许对/getAccessToken的所有访问。我已配置e spring安全,但响应变为403。{“时间戳”:“2020-04-29T02:45:26.770+0000”,“状态”:403,“错误”:“禁止”,“消息”:“禁止”,“路径”:“/getAccessToken”}所以打开spring安全调试日志,看看它在抱怨什么。在此之前,我尝试过使用POST方法,但仍然得到状态401。在此之前,我尝试过使用POST方法,但仍然得到状态401。