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

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

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

您的客户端默认使用HTTP基本身份validation方案,但您的服务器需要“表单”身份validation方案。

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

2.3.1。 客户密码

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

但您可以将客户端的身份validation方案更改为“表单”,请参阅OAuth 2开发人员指南 :

clientAuthenticationScheme:客户端用于向访问令牌端点进行身份validation的方案。 建议值:“http_basic”和“form”。 默认值:“http_basic”。 请参阅OAuth 2规范的第2.1节。