我正在尝试使用Django OAuth Toolkit为Django + Rest Framework设置OAuth2,这是使用“基于资源所有者密码”授权类型时无法理解的难题。
我可以使用以下命令为注册应用程序(客户所有者)的同一用户成功获取access_token:
但是,当我尝试使用相同的client_id和client_secret,但为其他用户更改username
和password
时,我得到了
{
"error_description": "Invalid credentials given.",
"error": "invalid_grant"
}
因此,注册的应用程序似乎只能使用一个“资源所有者” - “应用程序(客户端)所有者”本身,这使得“资源所有者基于密码”的授权类型无用,因为它的行为方式与“客户端凭据“但不使用”用户名“和”密码“。换句话说,我需要注册的应用程序代表另一个用户行事,而不是已注册该应用程序的用户(我),但我无法绕过它。
当然我总是可以编写自定义授权代码,但不应该支持开箱即用(我不知道)?
答案 0 :(得分:0)
问题是简单的错误配置和误用,导致行为模糊。
这有效:
client_id:client_secret
)client_secret
是此流程绝对必需的。