【问题标题】:Which authorization grant type should I use?我应该使用哪种授权授予类型?
【发布时间】:2018-10-18 22:23:53
【问题描述】:
在我的应用程序中,我有很多公司帐户。
我正在使用django-oauth-toolkit,我将根据特定公司的请求添加对我的 API 的访问权限。
我有几个端点,例如:
GET /api/users/ - 返回所有公司用户
GET /api/documents/ - 返回给定公司用户拥有的所有文档
我想知道我应该使用哪种授权授予类型:
客户端类型:Confidential
授权授予类型选项:
谁能告诉我哪种类型最适合我的情况以及为什么?
【问题讨论】:
标签:
python
django
rest
django-rest-framework
【解决方案1】:
你应该使用resource owner password-basedgrant:
资源所有者密码凭据授予类型适用于资源所有者与客户端具有信任关系的情况,例如设备操作系统或高权限应用程序。
流程:
客户端会询问用户他们的授权凭证(通常是用户名和密码)。
然后客户端向授权服务器发送一个带有以下正文参数的 POST 请求:
-
grant_type 密码为值
-
client_id 带有客户的 ID
-
client_secret 与客户的秘密
-
scope 具有以空格分隔的请求范围权限列表。
-
username 带有用户的用户名
-
password 带有用户密码
授权服务器将使用包含以下属性的JSONobject 进行响应:
-
token_type,值为 Bearer
-
expires_in 用一个整数表示访问令牌的 TTL
-
access_token 使用授权服务器私钥签名的 JWT
-
refresh_token 一个加密的有效载荷,可用于在访问令牌过期时刷新它。