使用 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 框架可浏览 API 中发送标头
在 api 视图方法上禁用 CSRF(django rest 框架)