我按照此question中提到的接受答案生成OAuth2令牌。但是我收到HTTP 401响应。当我调试时,我看到clientid
和clientsecret
未作为HTTP请求中表单的一部分传递。我只看到下面列出的值被传递。我还应该做些什么来传递clientid
和clientsecret
吗?
{grant_type=[password], username=[username], password=[password]}
答案 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节。