在yii2-oauth2-server

时间:2016-12-12 15:42:38

标签: php oauth-2.0 yii2 authorization yii-components

为什么密码grant_type必须提供客户端凭据(在此实现中)??? oauth2资源所有者规范只需要

{
    "grant_type" : "password",
    "username" : "some_user_name",
    "password" : "some_password"
}

此实施还要求 client_id client_secret 与此请求一起发送,以便成功。

我只是想知道我是否遗漏了某些东西

另请参阅http://andyfiedler.com/2014/09/how-secure-is-the-oauth2-resource-owner-password-credential-flow-for-single-page-apps

我想从我的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"
}

再见

由于

1 个答案:

答案 0 :(得分:0)

出于参考目的,OAuth2规范确实满足了这样的情况:即使客户端身份验证无法完成,没有机密的客户端仍然可以在请求正文中传递client_id参数。在第2.3.1节中,您有:

  

(...)授权服务器可以使用以下参数支持在请求体中包含客户端凭证:

     

<强>的client_id
  需要。在第2.2节描述的注册过程中发给客户端的客户端标识符。

     

<强> client_secret
  需要。客户的秘密。 如果客户端密码为空字符串,客户端可以省略该参数。