Django OAuth Toolkit“基于资源所有者密码”的授权类型

时间:2015-09-19 00:17:52

标签: python django oauth-2.0 django-rest-framework

我正在尝试使用Django OAuth Toolkit为Django + Rest Framework设置OAuth2,这是使用“基于资源所有者密码”授权类型时无法理解的难题。

我可以使用以下命令为注册应用程序(客户所有者)的同一用户成功获取access_token:

enter image description here

但是,当我尝试使用相同的client_id和client_secret,但为其他用户更改usernamepassword时,我得到了

{ "error_description": "Invalid credentials given.", "error": "invalid_grant" }

因此,注册的应用程序似乎只能使用一个“资源所有者” - “应用程序(客户端)所有者”本身,这使得“资源所有者基于密码”的授权类型无用,因为它的行为方式与“客户端凭据“但不使用”用户名“和”密码“。换句话说,我需要注册的应用程序代表另一个用户行事,而不是已注册该应用程序的用户(我),但我无法绕过它。

当然我总是可以编写自定义授权代码,但不应该支持开箱即用(我不知道)?

1 个答案:

答案 0 :(得分:0)

问题是简单的错误配置和误用,导致行为模糊。

这有效:

  • base64-encoded'授权'标题(client_id:client_secret
  • 确保将应用程序设置设置为'资源所有者基于密码的'。请注意,它不能是公共',client_secret是此流程绝对必需的。