我正在尝试使用Python oauthlib为网站实现Oauth2。我已经决定使用授权类型' ResourceOwnerPasswordCredentialsGrant',这是因为网站和API是我自己的,不会向第三方开放。
在资源_owner_password_credentials.py'为什么' client_authentication_required'硬编码返回' True'?
我是否需要验证我的客户(网站)?根据我的理解,这将成为一个公众'而不是机密的客户。
答案 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节中。
请注意"如果客户端是机密的",这次暗示公共客户也可以使用此授权类型,这是有道理的。
所以我认为这是由于对规范中的措辞过于严格的解释。