基于令牌的身份验证

时间:2015-05-19 06:43:44

标签: python authentication

我正在尝试解决基于令牌的身份验证,以便为登录目的创建一个简单的webapp。 通过休息呼叫,我得到如下的令牌。在这之后我会怎么做?因此,在服务器中,我有10个用户使用密码,当用户登录时,他/她将登录,并且只有在令牌与服务器中的用户名/密码匹配时才能登录。这是正确的逻辑吗?非常感谢示例。

"return": [{
    "token": "djfnvk42kfnlsdfk",
 }]

2 个答案:

答案 0 :(得分:1)

由于您似乎还没有那么多设置,我将通过一些示例代码向您介绍基于令牌的身份验证背后的想法:

您的想法是通过检查用户名和密码是否匹配(例如登录)来验证用户一次。之后,您将返回一个标识此客户端的安全令牌。最简单的方法是让客户端在每个请求发送HTTP标头中发送令牌。您必须了解如何使用您选择的框架做到最好。但它会是这样的:

import requests
r = requests.get('<MY_URI>', headers={'Authorization': 'TOK:<MY_TOKEN>'})

您必须记住在后端已经过身份验证的令牌的客户端,以便每次请求都可以检查令牌发送是否有效。然后,您可以通过执行以下操作来检索令牌:

request.META['Authorization']

请注意,这些只是示例,因为实现将取决于您选择的框架。对于不同的框架,还有一些实现和示例。

例如Django: https://github.com/jpulgarin/django-tokenapi http://blog.nknj.me/token-authentication-django-and-angular

但是,一旦您决定使用您将要使用的框架,您就可以在Google上找到更多自己。

答案 1 :(得分:1)

老实说,除非你是一名熟练的安全研究员,否则推出自己的身份验证方法几乎总是一个坏主意。我不是,这就是我在Django REST Framework(http://www.django-rest-framework.org/tutorial/1-serialization/)中使用内置身份验证的原因。它易于使用,提供了一种非常快速的方式来启动RESTful API,内置支持简单的令牌认证(您在问题中描述的内容)。