【问题标题】:How generation and validation process works for secure token authentication?生成和验证过程如何用于安全令牌身份验证?
【发布时间】:2014-02-20 01:42:45
【问题描述】:

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

据我了解

  1. 用户使用用户名和密码登录
  2. 服务器获取数据并检查用户名和密码是否匹配
  3. 如果匹配,使用类似 SHA256 的算法生成令牌?
  4. 向用户发送令牌
  5. 用户使用令牌和其他数据发送请求以访问受限数据?
  6. 服务器使用其他数据和哈希方法来检查令牌?

我感到困惑的是356,令牌生成部分。

  1. 对于3,您将哪些数据放入散列,它只是散列还是存在 更多的流程?
  2. 对于5,如果使用令牌发送任何其他数据怎么办?
  3. 对于6,发送的数据如何用于验证令牌?
  4. 如何判断令牌是否已过期?

【问题讨论】:

    标签: authentication token access-token


    【解决方案1】:

    对于 3,您将哪些数据放入散列,它只是散列还是过程中还有更多?

    无论你真正喜欢什么。实施细节只是您关心的问题。基本上,令牌是一个随机字符串(加密、散列与否)......同样,这取决于您要如何实现它。但是,请始终确保令牌在整个系统中是唯一的,并且系统可以使用它来有效地识别用户及其范围

    对于 5,如果任何其他数据与令牌一起发送怎么办?

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

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

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

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

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

    • 访问令牌:唯一字符串
    • UserId:相关的用户id
    • 创建日期:UTC 时间

    这就是让它工作所需的一切,当然,通常你会想要提供更强的安全性,并且这个表会更大。

    【讨论】:

      猜你喜欢
      • 2013-02-12
      • 2010-10-24
      • 1970-01-01
      • 2016-12-18
      • 2011-06-08
      • 2017-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多