【发布时间】:2017-02-13 11:14:27
【问题描述】:
似乎我在这里遗漏了一些非常基本的东西。
我制作了一个 REST Api,它接受 POST 请求以使用 Apache Oltu OAuth2 服务生成令牌,看起来像这样:
@POST
@Consumes("application/x-www-form-urlencoded")
@Produces("application/json")
public Response authorize(@Context HttpServletRequest request) throws OAuthSystemException, IOException {
try {
OAuthTokenRequest oauthRequest = new OAuthTokenRequest(request);
OAuthIssuer oauthIssuerImpl = new OAuthIssuerImpl(new MD5Generator());
当我使用 HttpRequester 或 Postman 测试服务时,如果我输入所有身份验证和 OAuth2 参数作为输入参数,它就可以正常工作,例如:
https://localhost:8443/rest/OAuthService/token?grant_type=password&username=userfortest&password=Johhny1é&client_id=1234
但是我读到,对于任何 POST 请求,所有参数应该 在 HTTP 请求的正文中,并且从不使用 url 作为简单参数发送。当我尝试在 HTTP 请求的正文中传递它时,以使请求安全(因此 url 在没有参数的情况下是相同的,并且所有参数都在正文中指定),似乎它没有收到任何来自
之后的主体,因为它引发异常OAuthTokenRequest oauthRequest = new OAuthTokenRequest(request);
带有以下信息:
{"error_description":"Missing grant_type parameter value","error":"invalid_request"}
通过 url 传递参数是否是 Oltu/OAuth2 的预期行为?还是我做错了什么?
提前致谢。
【问题讨论】:
标签: spring rest post oauth jersey