使用Django REST Framework作为Django的身份验证后端

时间:2016-04-14 18:27:32

标签: django django-rest-framework django-rest-auth

我目前有一个利用Django REST Framework的大型Django项目。

我有另一个较小的Django项目,我想建立一个不直接共享数据库而是通过API获取必要数据的主项目。

我想覆盖较小项目的AUTHENTICATION_BACKEND,并让它使用较大项目中的API auth端点作为身份验证器。

基本上,这个过程如下:

  1. 用户尝试使用大型Django-DRF项目中的用户凭据登录小型Django项目。
  2. 小型Django项目向大型Django-DRF项目发送API登录请求。
  3. 大型Django-DRF项目返回API令牌和序列化用户信息。
  4. 小型Django项目使用来自大型Django-DRF项目响应的信息自动将用户添加/更新到其数据库。
  5. 小型Django项目使用令牌响应用户客户端,以便来自Small Django项目页面的AJAX请求可以直接发送到大型Django-DRF项目的端点。
  6. 是否有适用于此用例的现有插件,还是应该编写自己的AUTHENTICATION_BACKEND?

1 个答案:

答案 0 :(得分:2)

听起来你可能想看看django-rest-framework-jwt。这将允许您使用JWT作为您的身份验证机制,可以轻松处理您的情况。该项目实际上提供了一个特定于您想要的端点,verify_jwt_token。根据{{​​3}}:

  

在某些微服务架构中,身份验证由单个服务处理。其他服务委派确认用户已登录此身份验证服务的责任。这通常意味着服务会将从用户收到的JWT传递给身份验证服务,并在将受保护资源返回给用户之前等待确认JWT有效。

因此,您的工作流程将类似于:

  1. 用户对较大的API进行身份验证
  2. 用户从身份验证请求
  3. 返回JWT
  4. 用户将JWT以及每个请求发送到较小的API
  5. 较小的API在收到JWT后会将其转发到较大API中的verify_jwt_token端点