资源所有者密码资源详细信息 - 传递客户端 ID 和机密以生成 oauth2 令牌



我按照这个问题中提到的公认答案生成了OAuth2令牌。但是我收到HTTP 401响应。调试时,我看到clientidclientsecret没有作为 HTTP 请求中表单的一部分传递。我只看到下面列出的值被传递。我是否应该做一些额外的事情来通过clientidclientsecret

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

默认情况下,客户端使用 HTTP 基本身份验证方案,但服务器需要"表单"身份验证方案。

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

2.3.1. 客户端密码

拥有客户端密码的客户端可以使用 HTTP Basic [RFC2617] 中定义的身份验证方案进行身份验证 授权服务器。 客户端标识符使用 "application/x-www-form-urlencoded"编码算法 附录B,并将编码值用作用户名;客户端 密码使用相同的算法进行编码,并用作 密码。 授权服务器必须支持 HTTP 基本 用于对已颁发的客户端进行身份验证的身份验证方案 客户端密码。

但是您可以将客户端的身份验证方案更改为"form",请参阅 OAuth 2 开发人员指南:

clientAuthenticationScheme:客户端用于向访问令牌终结点进行身份验证的方案。建议值:"http_basic"和"表单"。默认值:"http_basic"。请参阅 OAuth 2 规范的第 2.1 节。

相关内容

最新更新