django-oauth-toolkit客户端凭证模式未返回refresh_token问题说明
问题背景
在Django REST Framework中集成django-oauth-toolkit实现OAuth2授权能力,实现逻辑为:
- 合作方用户可在平台注册自有应用
- 应用注册完成后获取对应的
client id、client secret凭证 - 合作方持有凭证申领
access_token,凭令牌调用接口访问服务端开放资源
目前已将原有的表单式应用注册流程全部改造为REST接口,但调用access_token申领接口时,响应仅返回access_token及对应过期时间,未返回预期的refresh_token,未定位到配置遗漏点。
当前应用配置参数:
- Client type:
Confidential - Authorization grant type:
Client Credentials
问题结论
该现象不属于配置错误,无需调整django-oauth-toolkit配置补全返回。
查阅RFC 6749 OAuth2官方规范可确认:Client Credentials(客户端凭证)授权模式的设计初衷是供客户端以自身身份(而非代理终端用户)请求受保护资源,规范明确要求该授权模式下授权服务器不得签发refresh_token:
客户端凭证模式的访问令牌响应中,授权服务器不得包含刷新令牌。
如果业务场景确实需要使用refresh_token能力,需根据实际业务诉求切换支持刷新令牌的授权类型,可选类型包括授权码模式(Authorization Code)、密码模式(Resource Owner Password Credentials,不推荐生产环境使用)。
内容的提问来源于stack exchange,提问作者Shishir Subedi
相关产品推荐
相关产品推荐

