ResourceOwnerPasswordResourceDetails - 传递clientid和secret以生成oauth2令牌

时间:2017-05-09 00:48:03

标签: java spring spring-boot spring-security oauth-2.0

我按照此question中提到的接受答案生成OAuth2令牌。但是我收到HTTP 401响应。当我调试时,我看到clientidclientsecret未作为HTTP请求中表单的一部分传递。我只看到下面列出的值被传递。我还应该做些什么来传递clientidclientsecret吗?

{grant_type=[password], username=[username], password=[password]}

1 个答案:

答案 0 :(得分:4)

您的客户端默认使用HTTP基本身份验证方案,但您的服务器需要" form"认证方案。

您的服务器不符合OAuth 2,请参阅RFC 6749

  

<强> 2.3.1。客户密码

     

拥有客户端密码的客户端可以使用HTTP Basic      [RFC2617]中定义的认证方案,用于认证      授权服务器。客户端标识符使用      &#34;应用程序/ X WWW的窗体-urlencoded&#34;编码算法      附录B,编码值用作用户名;客户端      密码使用相同的算法编码并用作      密码。授权服务器必须支持HTTP Basic      用于验证发布的客户端的身份验证方案      客户密码。

但您可以将客户的身份验证方案更改为&#34;表单&#34;,请参阅OAuth 2 Developers Guide

  

clientAuthenticationScheme:客户端用于对访问令牌端点进行身份验证的方案。建议值:&#34; http_basic&#34;和&#34;形式&#34;。默认值:&#34; http_basic&#34;。请参阅OAuth 2规范的第2.1节。