我正在使用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
答案 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