资源所有者密码凭据授予 - 公共客户端

时间:2015-01-27 23:45:33

标签: python oauth-2.0 flask-oauthlib

我正在尝试使用Python oauthlib为网站实现Oauth2。我已经决定使用授权类型' ResourceOwnerPasswordCredentialsGrant',这是因为网站和API是我自己的,不会向第三方开放。

在资源_owner_password_credentials.py'为什么' client_authentication_required'硬编码返回' True'?

我是否需要验证我的客户(网站)?根据我的理解,这将成为一个公众'而不是机密的客户。

1 个答案:

答案 0 :(得分:1)

看起来oauthlib的作者以这种方式解释了这个规范。资源所有者密码凭据授予类型(http://tools.ietf.org/html/rfc6749#section-4.3)部分说:

  

(B)客户端从授权请求访问令牌           服务器的令牌端点,包括收到的凭据           来自资源所有者。在提出请求时,客户端           使用授权服务器进行身份验证。

请注意,建议客户端进行身份验证,但不会在最后一句中使用MUST关键字。就在下面那个稍微复杂一点的文字(http://tools.ietf.org/html/rfc6749#section-4.3.2)说:

  

如果客户类型是保密的或客户是发给客户的   凭证(或指定的其他认证要求),
  客户端必须按授权服务器进行身份验证,如上所述   在第3.2.1节中。

请注意"如果客户端是机密的",这次暗示公共客户也可以使用此授权类型,这是有道理的。

所以我认为这是由于对规范中的措辞过于严格的解释。