grant_type密码需要设置client_id

时间:2018-01-24 21:57:33

标签: c# asp.net-core-2.0 identityserver4

我正在使用IdentityServer4设置一个asp.net core 2 web api,由于一些现有客户,我需要支持资源所有者密码凭证授权。我遇到了获取令牌的问题,因为它说“找不到客户端标识符”。

这失败了......

Content-Type: application/x-www-form-urlencoded 
grant_type=password&username=myuser&password=mypassword

这成功了......

Content-Type: application/x-www-form-urlencoded 
grant_type=password&username=myuser&password=mypassword&client_id=ro.client

为什么我需要添加client_id才能使用? OAuth 2.0规范未指定需要它 - https://tools.ietf.org/html/rfc6749#section-4.3

1 个答案:

答案 0 :(得分:1)

  

如果客户端类型是机密或客户端是客户端      凭证(或指定的其他身份验证要求),      客户端必须按照描述使用授权服务器进行身份验证      在第3.2.1节中。 - https://tools.ietf.org/html/rfc6749#section-4.3

请求涉及客户端冒充用户,IdentityServer始终需要知道发出请求的客户端,以便它可以对其进行授权(例如,验证请求的范围,甚至可以对其进行身份验证)。

我在这里使用IdentityServer。我不知道我希望公共访问ROPC授权类型的任何情况。你呢?

另外,请不要使用ROPC授权类型,它是2018年的花花公子:https://www.scottbrady91.com/OAuth/Why-the-Resource-Owner-Password-Credentials-Grant-Type-is-not-Authentication-nor-Suitable-for-Modern-Applications