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

Bra*_*ade 5 django django-rest-framework django-rest-auth

我目前有一个利用 Django REST 框架的大型 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 项目使用令牌响应用户客户端,以便来自小型 Django 项目页面的 AJAX 请求可以直接发送到大型 Django-DRF 项目的端点。

是否有值得在此用例中使用的现有插件,还是我应该编写自己的 AUTHENTICATION_BACKEND?

Joe*_*elm 3

听起来您可能想研究一下django-rest-framework-jwt。这将允许您使用 JWT 作为身份验证机制,它可以轻松处理您的情况。该项目实际上专门为您提供了一个端点,verify_jwt_token. 根据文档

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

所以你的工作流程会是这样的:

  1. 用户向您的更大的 API 进行身份验证
  2. 用户收到身份验证请求返回的 JWT
  3. 用户将 JWT 与每个请求一起发送到较小的 API
  4. 较小的 API 在收到 JWT 后,会将其转发到verify_jwt_token较大 API 中的端点