我想了解基于令牌的身份验证意味着什么。我搜索了互联网,但找不到任何可以理解的内容。
8 回答
我认为这里解释得很好——仅引用长篇文章的关键句子:
基于令牌的身份验证系统背后的一般概念很简单。允许用户输入他们的用户名和密码以获得允许他们获取特定资源的令牌 - 无需使用他们的用户名和密码。一旦获得了他们的令牌,用户就可以向远程站点提供令牌——它在一段时间内提供对特定资源的访问权限。
换句话说:为身份验证添加一个间接级别——用户不必为每个受保护资源使用用户名和密码进行身份验证,而是通过这种方式进行一次身份验证(在有限持续时间的会话内),作为回报获得一个限时令牌,并在会话期间使用该令牌进行进一步的身份验证。
优点很多——例如,用户一旦获得令牌,就可以将令牌传递到他们愿意在有限的时间和有限的资源集中信任但不愿意的其他自动化系统信任他们的用户名和密码(即,他们被允许访问的每个资源,永远或至少在他们更改密码之前)。
如果还有什么不清楚的地方,请编辑您的问题,以澄清您没有 100% 清楚了解的内容,我相信我们可以进一步帮助您。
基于令牌的身份验证依赖于在每个请求上发送到服务器的签名令牌。
使用基于令牌的方法有什么好处?
跨域/CORS: cookie + CORS 在不同域之间不能很好地发挥作用。基于令牌的方法允许您对任何域上的任何服务器进行 AJAX 调用,因为您使用 HTTP 标头来传输用户信息。
无状态(又名服务器端可扩展性):不需要保留会话存储,令牌是一个自包含的实体,可以传达所有用户信息。状态的其余部分存在于客户端的 cookie 或本地存储中。
CDN:您可以从 CDN 提供应用程序的所有资产(例如 javascript、HTML、图像等),而您的服务器端只是 API。
解耦:您不受任何特定身份验证方案的约束。令牌可能会在任何地方生成,因此您的 API 可以通过单一方式对这些调用进行身份验证从任何地方调用。
移动就绪:当您开始在本机平台(iOS、Android、Windows 8 等)上工作时,cookie 并不理想,而使用基于令牌的方法会大大简化这一点。
CSRF:由于您不依赖于 cookie,因此您不需要防止跨站点请求(例如,不可能同胞您的站点,生成 POST 请求并重新使用现有的身份验证 cookie,因为不会有)。
性能:我们在这里没有提供任何硬性能基准,但网络往返(例如在数据库上查找会话)可能比计算 HMACSHA256 来验证令牌和解析其内容需要更多时间。
A是仅可能已创建token
的一段数据,其中包含足够的数据来识别特定用户。Server X
您可以出示您的登录信息并要求Server X
提供token
;然后你可能会展示你的token
并要求Server X
执行一些特定于用户的操作。
Token
s 是使用来自密码学领域的各种技术的各种组合以及来自更广泛的安全研究领域的输入创建的。如果您决定创建自己的token
系统,那么您最好非常聪明。
基于令牌(安全/身份验证)
这意味着为了让我们证明我们已经访问,我们首先必须接收令牌。在现实生活中,令牌可能是建筑物的门禁卡,也可能是您家门锁的钥匙。为了让您取回办公室的钥匙卡或家中的钥匙,您首先需要证明您是谁,并且您确实有权使用该令牌。它可以是简单的事情,比如向某人展示您的 ID 或给他们一个秘密密码。所以想象一下我需要进入我的办公室。我下楼到安全办公室,向他们出示我的身份证,他们给了我这个令牌,让我进入大楼。现在我可以不受限制地在大楼内做任何我想做的事情,只要我随身携带我的令牌。
基于令牌的安全性有什么好处?
如果我们回想一下不安全的 API,在这种情况下我们必须做的是,我们必须为我们想做的所有事情提供密码。
想象每次我们进入办公室的一扇门时,我们都必须给坐在门边的每个人我们的密码。现在这将是非常糟糕的,因为这意味着我们办公室内的任何人都可以获取我们的密码并冒充我们,这非常糟糕。相反,我们所做的是我们检索令牌,当然还有密码,但我们从一个人那里检索。然后我们可以在建筑物内的任何地方使用这个令牌。当然,如果我们丢失了令牌,我们就会遇到与其他人知道我们的密码相同的问题,但这会导致我们如何确保如果我们丢失了令牌,我们可以撤销访问权限,也许token 不应该超过 24 小时,所以第二天我们来办公室,我们需要再次出示我们的 ID。但是,我们只向一个人出示身份证,
问题很老,技术也很先进,这是目前的状态:
JSON Web Token (JWT) 是一种基于 JSON 的开放标准 (RFC 7519),用于在 Web 应用程序环境中的各方之间传递声明。这些令牌被设计为紧凑、URL 安全和可用,尤其是在 Web 浏览器单点登录 (SSO) 上下文中。
它只是与数据库中的用户或其他方式相关联的哈希。该令牌可用于验证并授权用户访问应用程序的相关内容。要在客户端登录时检索此令牌是必需的。首次登录后,您需要保存检索到的令牌而不是会话、会话 ID 等任何其他数据,因为这里所有内容都是访问应用程序其他资源的令牌。
Token用于保证用户的真实性。
更新: 目前,我们拥有更先进的基于令牌的技术,称为JWT(Json Web 令牌)。该技术有助于在多个系统中使用相同的令牌,我们称之为单点登录。
基本上基于 JSON 的令牌包含有关用户详细信息和令牌到期详细信息的信息。因此,如果令牌无效或根据详细信息过期,则该信息可用于进一步验证或拒绝请求。
当您注册一个新网站时,您通常会收到一封电子邮件以激活您的帐户。该电子邮件通常包含一个可供点击的链接。该链接的一部分包含一个令牌,服务器知道此令牌并可以将其与您的帐户相关联。令牌通常会有一个与之关联的到期日期,因此您可能只有一个小时来点击链接并激活您的帐户。使用 cookie 或会话变量,这一切都不可能实现,因为它不知道客户使用什么设备或浏览器来检查电子邮件。