Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为web应用程序使用的python REST API选择适当的身份验证类_Python_Django_Rest_Authentication_Django Rest Framework - Fatal编程技术网

为web应用程序使用的python REST API选择适当的身份验证类

为web应用程序使用的python REST API选择适当的身份验证类,python,django,rest,authentication,django-rest-framework,Python,Django,Rest,Authentication,Django Rest Framework,我想使用Django REST框架构建一个REST API。最初,它的客户端将是一个web应用程序,但可以想象,未来的客户端可能包括移动应用程序 不幸的是,我发现列表中列出的身份验证类有点混乱。看来TokenAuthentication可以满足我的需要。我宁愿避免OAuth的认知开销,除非有令人信服的安全理由这样做 这是一个我想在这个非常早期的阶段做出的正确决定。有人能提供一些建议吗 编辑:虽然希望与此无关,但我想我会提到我将使用Neo4j作为应用程序的后端,而不是传统的SQL数据库。Djang

我想使用Django REST框架构建一个REST API。最初,它的客户端将是一个web应用程序,但可以想象,未来的客户端可能包括移动应用程序

不幸的是,我发现列表中列出的身份验证类有点混乱。看来
TokenAuthentication
可以满足我的需要。我宁愿避免OAuth的认知开销,除非有令人信服的安全理由这样做

这是一个我想在这个非常早期的阶段做出的正确决定。有人能提供一些建议吗


编辑:虽然希望与此无关,但我想我会提到我将使用Neo4j作为应用程序的后端,而不是传统的SQL数据库。

Django REST Framework为您提供了拥有多种身份验证方法的灵活性。由于我还有一些时间,这对将来有类似问题的访问者很有用,我将概述最常见的身份验证方法的好处

最初,它的客户端将是一个web应用程序,但可以想象,未来的客户端可能包括移动应用程序

通常,当使用与API位于同一域和Django实例上的web应用程序时,大多数人使用
SessionAuthentication
,因为它使用现有的身份验证方法与服务器交互。身份验证可以无缝工作,因此您无需执行第二个身份验证步骤

大多数API还支持某种形式的
基本身份验证
,这很可能是因为它最容易测试,但也是因为它最容易实现。对于您的web应用程序,这不是推荐的身份验证方法,但是对于您的移动应用程序,使用它并不少见。我个人建议使用基于令牌的身份验证,这样您就不必担心客户端会截获用户的凭据

看来
TokenAuthentication
可以满足我的需要

许多人使用
TokenAuthentication
,因为它理解和使用起来相对简单,而且一开始似乎满足了每个人的需求。令牌直接连接到用户,并且不会自动旋转(),因此代表用户工作的每个客户端都会获得相同的令牌。如果您需要撤销令牌,这可能是一个问题,因为所有其他客户端的令牌也将失效

我宁愿避免OAuth的认知开销,除非有令人信服的安全理由这样做

OAuth 2(
OAuth2Authentication
)在
TokenAuthentication
的好处之上,为您提供令牌轮换和令牌过期。还有一个好处是能够撤销单个令牌,而不会影响为用户进行身份验证的其他客户端。您还可以通过使用作用域将客户端限制到API的各个区域,如果API的某些区域比其他区域更经常使用,这将非常有用


我还要提到的是,虽然我没有使用过它,但它在支持渠道中已经出现了很多。就检索令牌而言,它的工作原理非常类似于
令牌身份验证
,但它还有一个额外的好处,即为客户端提供唯一的令牌和令牌过期。

您面临的困惑是什么?网络上有很多资源解释这些auth协议的不同含义。我想我只是发现自己身处一个陌生的地方,所以我想我可能会问路。这个答案在很多方面都很有帮助,但特别是通过介绍词汇,我可以查到这些词汇来帮助我理解,例如“代币轮换”。这是一种外交回答。你们能用更多的细节和特征描述来解释每一个主题吗?但哪一个是最安全的呢?