使用oauth2

时间:2018-12-25 20:29:59

标签: java http servlets https oauth-2.0

我可以对oauth2使用“ PUT”请求吗? 我已经使用Javaservelet编写了REST API应用程序。 当我使用“ POST”请求时,将获得成功的access_token响应。

但是,当我使用“ PUT”请求时,出现以下错误。

  

{“ error_description”:“缺少grant_type参数值”,“ error”:“ invalid_request”}

我已经按照如下方式巧妙地配置了事物PUT请求和POST请求。

POST请求

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    try
    {
      handleGrants(request, response);
    }
    catch (Exception e)
    {
      response.getWriter().write("Error in Authentication System!! ");
      logger.error("Failed trying to get tokens", e);
    }
    finally
    {
      response.getWriter().flush();
      response.getWriter().close();
    }
}

PUT请求

public void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    try
    {
      handleGrants(request, response);
    }
    catch (Exception e)
    {
      response.getWriter().write("Error in Authentication System!! ");
      logger.error("Failed trying to get tokens", e);
    }
    finally
    {
      response.getWriter().flush();
      response.getWriter().close();
    }
}

“ PUT”和“ POST”请求的我的身体参数如下。

enter image description here

1 个答案:

答案 0 :(得分:2)

从给定的错误中,我能说的是您的 handleGrants 方法未获取请求正文。因此,它说不能确定拨款类型。可能是您应该调试并查看函数内部的参数用法。

无论如何,OAuth 2.0强制使用 POST 作为令牌端点。

3.2. Token Endpoint

  

客户端必须在制作访问令牌时使用HTTP“ POST”方法      请求。

因此,请遵循规范说明并使用POST。

附录

根据RFC2119

  

必须

     

此词,或术语“必需”或“外壳”,表示该定义是规范的绝对要求。