使用 Django rest 框架在两个 api 之间配置身份验证的最佳方法是啥?

Posted

技术标签:

【中文标题】使用 Django rest 框架在两个 api 之间配置身份验证的最佳方法是啥?【英文标题】:Which is the best way to configure auth between two apis using Django rest framework?使用 Django rest 框架在两个 api 之间配置身份验证的最佳方法是什么? 【发布时间】:2021-01-23 15:17:26 【问题描述】:

我正在使用 DRF 开发 API,并且我想将此 API 与另一个 API 和一个应用程序一起使用。对于第二个 API,如何开发 API 身份验证?我认为使用 JWT 不好,因为我需要将令牌保存在消费者 Api 上并不断刷新。

【问题讨论】:

【参考方案1】:

如果您的要求是避免刷新 JWT 令牌,您可以在 settings.py 中进行配置

JWT_AUTH = 
'JWT_ALLOW_REFRESH': True,
'JWT_VERIFY_EXPIRATION': False

您可以使用包 djangorestframework-jwt==1.11.0 如果您根本不想使用 JWT,您仍然可以使用基本身份验证而不是基于令牌的身份验证。

您的授权标头将具有如下格式:

Basic cG9pc29uaXZAYXJraGFtLmNvbTpwYXNzd29yZA==

在您更改密码之前,基本身份验证不会更改。

但由于您要问哪个是最好的,出于正确的安全原因,我会推荐过期的 JWT。但是,如果您从等式中取出过期 JWT 和 Basic Auth,除了 JWT 仍然可以过期并且您可以要求重新授权而无需消费者更改密码。

请注意,您可以同时使用基本身份验证和 JWT 身份验证。

对于您的第二个 API 的内部使用,即使实现了 JWT,您也可以使用基本身份验证。

【讨论】:

以上是关于使用 Django rest 框架在两个 api 之间配置身份验证的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Django Rest 框架嵌套序列化器

如何在 Django REST 框架可浏览 API 中发送标头

使用Django REST框架创建一个简单的Api

在 api 视图方法上禁用 CSRF(django rest 框架)

在带有 json api 的 django rest 框架中使用 slug 而不是 ID

如何使用邮递员测试 Django REST 框架登录保护 API?