为什么密码grant_type必须提供客户端凭据(在此实现中)??? oauth2资源所有者规范只需要
{
"grant_type" : "password",
"username" : "some_user_name",
"password" : "some_password"
}
此实施还要求 client_id 和 client_secret 与此请求一起发送,以便成功。
我只是想知道我是否遗漏了某些东西
我想从我的SPA授予对受保护资源的访问权限。在浏览器源代码中公开客户端凭据是有潜在危险的。
此外,https://bshaffer.github.io/oauth2-server-php-docs/overview/grant-types/处的原始图书馆不会强制资源所有者授予类型中的客户端凭据
更新1 13-12-2016
在原始图书馆阅读时,我发现他们已经拥有了“公共客户”的概念。 (即没有client_secret的客户端。)
使用公共客户端,我可以从请求中省略client_secret。无论如何,我再次阅读资源所有者规范,并且没有提及它。
这样,资源所有者令牌请求必须以这种方式执行(非标准)
{
"grant_type" : "password",
"username" : "some_user_name",
"password" : "some_password"
"cliend_id" : "some_client_id"
}
再见
由于
答案 0 :(得分:0)
出于参考目的,OAuth2规范确实满足了这样的情况:即使客户端身份验证无法完成,没有机密的客户端仍然可以在请求正文中传递client_id
参数。在第2.3.1节中,您有:
(...)授权服务器可以使用以下参数支持在请求体中包含客户端凭证:
<强>的client_id 强>
需要。在第2.2节描述的注册过程中发给客户端的客户端标识符。<强> client_secret 强>
需要。客户的秘密。 如果客户端密码为空字符串,客户端可以省略该参数。