我应该使用哪种授权授予类型?

时间:2018-10-18 11:24:23

标签: python django rest django-rest-framework

在我的申请中,我有很多公司帐户。 我正在使用django-oauth-toolkit,并且我将根据特定公司的请求添加对我的API的访问权限。

我有一些端点,例如:

  

GET /api/users/-返回所有公司用户

     

GET /api/documents/-返回给定公司用户拥有的所有文档

我想知道应该使用哪种授权授予类型:

客户端类型:Confidential

授权授予类型选项:

  • 客户凭证
  • 授权码
  • 基于资源所有者的密码
  • 隐式

任何人都可以告诉我哪种类型最适合我,为什么?

1 个答案:

答案 0 :(得分:2)

您应该使用resource owner password-based授权:

资源所有者密码凭据授予类型适用于资源所有者与客户端具有信任关系的情况,例如设备操作系统或高特权应用程序。

流量

客户端将要求用户提供其授权凭据(通常是用户名和密码)。

然后,客户端将带有以下主体参数的POST请求发送到授权服务器:

  • grant_type,其密码为
  • client_id和客户的ID
  • client_secret和客户的秘密
  • scope以及以空格分隔的请求范围权限列表。
  • username和用户名
  • password和用户密码

授权服务器将以JSON对象作为响应,该对象包含以下属性:

  • token_type,其值为Bearer
  • expires_in,其中一个整数代表访问令牌的TTL
  • access_token使用授权服务器的私钥签名的JWT
  • refresh_token一种加密的有效负载,可用于在访问令牌到期时刷新访问令牌。