生成和验证过程如何用于安全令牌认证?

时间:2014-02-20 01:42:46

标签: authentication token access-token

我正在比较cookietoken身份验证。我对cookie身份验证非常熟悉,但我需要了解token身份验证的工作原理。

据我理解

  1. 用户使用用户名和密码登录
  2. 服务器获取数据并检查用户名和密码是否匹配
  3. 如果匹配,使用像SHA256这样的alg生成令牌?
  4. 将令牌发送给用户
  5. 用户发送带令牌和其他数据的请求以访问受限数据?
  6. 服务器使用其他数据和哈希方法来检查令牌?
  7. 我感到困惑的是356,即令牌生成部分。

    1. 对于3,您将哪些数据用于哈希,它只是一个哈希还是存在 更多的过程?
    2. 对于5,如果使用令牌发送任何其他数据会怎样?
    3. 对于6,如何发送数据用于验证令牌?
    4. 如何判断令牌是否已过期?

1 个答案:

答案 0 :(得分:1)

  

对于3,您为哈希提供了哪些数据,它只是一个哈希值,还是该流程还有更多?

无论你真正喜欢什么。实施细节仅供您考虑。基本上,令牌是一个随机字符串(加密,散列或不散列)......再次,由您决定如何实现它。但是,始终确保令牌在整个系统中是唯一的,并且系统可以使用它来有效地识别用户及其范围

  

对于5,如果使用令牌发送任何其他数据会怎么样?

我不太确定你还需要发送什么,但通常你不必发送任何其他东西,因为我上面提到的......访问令牌必须描述用户(或设备,或其他)及其在系统内的范围。那么,你为什么要费心去发送其他信息呢?

  

对于6,如何发送数据用于验证令牌?

再次,这取决于你。其他数据可以是用户的电子邮件地址或用户ID,然后您的系统可以将用户ID(或电子邮件)与访问令牌相匹配。但是,这不是强制性的,您可以按照您想要的方式实现它。

  

如何判断令牌是否已过期?

好吧,如果您的系统发出临时访问令牌,希望它会跟踪创建访问令牌的时间,然后根据创建确定访问令牌是否已过期。这是从服务器端。例如,在最简单的形式中,您可以拥有一个存储访问令牌的数据库表,其中包含以下列:

  • 访问令牌:唯一字符串
  • UserId:相关用户ID
  • DateCreated:UTC时间

这就是你需要它才能使它工作,当然,通常你会想要提供更强的安全性,这个表会更大。