什么是基于令牌的身份验证?

我想了解基于令牌的身份验证意味着什么。我在网上搜索了一下,但找不到任何可以理解的东西。

439199 次浏览

token是一个只有Server X可能创建的数据,它包含足够的数据来识别特定的用户。

您可以提供您的登录信息,并要求Server Xtoken;然后你可以展示你的token,并要求Server X执行一些用户特定的操作。

# eyz0是使用来自密码学领域的各种技术的各种组合以及来自更广泛的安全研究领域的输入来创建的。如果你决定创建自己的token系统,你最好非常聪明。

我认为这很好地解释了在这里——引用了这篇长文的关键句子:

背后的一般概念 基于令牌的认证系统是 简单。允许用户输入他们的 用户名和密码,以便 获得一个令牌,允许他们这样做 获取一个特定的资源-没有 使用用户名和密码。 一旦获得了他们的令牌, 用户可以提供令牌 提供对特定资源的访问 在一段时间内,对着遥控器 网站。< / p >

换句话说:为身份验证添加一个间接级别——用户不必为每个受保护的资源使用用户名和密码进行身份验证,而是以这种方式进行一次身份验证(在有限持续时间的会话内),获得一个有时间限制的令牌作为回报,并在会话期间使用该令牌进行进一步的身份验证。

优点有很多——例如,一旦用户获得令牌,他们可以将令牌传递到其他一些自动化系统,他们愿意在有限的时间和有限的资源集中信任这个系统,但是愿意信任他们的用户名和密码(即,他们被允许访问的每一个资源,永远或至少直到他们更改密码)。

如果还有什么不清楚的地方,请编辑你的问题,澄清你不是100%清楚的东西,我相信我们可以进一步帮助你。

令牌是服务器创建的一段数据,包含标识特定用户和令牌有效性的信息。令牌将包含用户的信息,以及一个特殊的令牌代码,用户可以通过支持身份验证的每个方法将其传递给服务器,而不是直接传递用户名和密码。

基于令牌的身份验证是一种安全技术,它使用服务器提供的安全令牌对试图登录服务器、网络或其他安全系统的用户进行身份验证。

如果用户可以通过传递安全令牌向服务器证明他或她是有效用户,则身份验证成功。服务验证安全令牌并处理用户请求。

服务验证令牌后,将使用它为客户机建立安全上下文,这样服务就可以为后续用户请求做出授权决策或审计活动。

# EYZ0 (# EYZ1)

从# EYZ0

基于令牌的身份验证,依赖于发送到的签名令牌

使用基于令牌的方法有什么好处?

  • 跨域/ CORS: cookies + CORS在不同的域不能很好地发挥作用。基于令牌的方法允许您制作AJAX 调用任何服务器,任何域,因为你使用HTTP头

  • .命令用于传输用户信息
  • 无状态(又称服务器端可伸缩性):不需要保持会话存储,令牌是一个传递所有用户信息的自包含实体。其余的状态保存在客户机端的cookie或本地存储中。

  • CDN:你可以从一个CDN提供你的应用程序的所有资产(例如javascript, HTML,图像等),而你的服务器端只是API。

  • 分离:您没有绑定到任何特定的身份验证方案。令牌可以在任何地方生成,因此您的API可以 可以从任何地方调用,并且只有一种验证方式 李的电话。< / p > < / >

  • 移动准备:当你开始在原生平台(iOS, Android, Windows 8等)上工作时,cookie在消耗a时并不理想 基于标记的方法大大简化了这一点。

  • 由于你不依赖于cookie,你不需要保护跨站点请求(例如,它将不可能 sib你的站点,生成一个POST请求并重新使用现有的认证cookie,因为不会有) 我们在这里不提供任何硬性能基准测试,而是一个网络往返(例如,在数据库上找到一个会话) 可能比计算HMACSHA256要花更多的时间

    .

它只是哈希与数据库中的用户或其他方式相关联。该令牌可用于身份验证,然后授权用户访问应用程序的相关内容。要在客户端检索此令牌,需要登录。第一次登录后,你需要保存检索到的令牌,而不是任何其他数据,如会话,会话id,因为这里的一切都是令牌,以访问应用程序的其他资源。

令牌用于确保用户的真实性。

< >强更新: 目前,我们有更先进的基于令牌的技术,称为JWT (Json Web令牌)。这种技术有助于在多个系统中使用相同的令牌,我们称之为单点登录

基本上,基于JSON的令牌包含用户详细信息和令牌到期详细信息。因此,如果令牌无效或过期,可以根据详细信息使用该信息进一步验证或拒绝请求。

问题老了,技术先进了,现在的状态是这样的:

JSON Web Token (JWT)是一个基于JSON的开放标准(RFC 7519),用于在Web应用程序环境中在各方之间传递声明。令牌的设计是紧凑的,url安全的和可用的,特别是在web浏览器单点登录(SSO)上下文中。

https://en.wikipedia.org/wiki/JSON_Web_Token < a href = " https://en.wikipedia.org/wiki/JSON_Web_Token " > < / >

当你注册一个新网站时,通常会收到一封电子邮件来激活你的账户。这封邮件通常包含一个点击链接。该链接的一部分包含一个令牌,服务器知道这个令牌并可以将其与您的帐户关联。该令牌通常有一个与之相关的到期日期,因此您可能只有一个小时的时间点击链接并激活您的帐户。这些在cookie或会话变量中都不可能实现,因为不知道客户使用什么设备或浏览器来检查电子邮件。

基于令牌的(安全/身份验证)

这意味着为了证明我们拥有访问权,我们首先必须接收令牌。在现实场景中,令牌可以是建筑物的门禁卡,也可以是你房子的锁的钥匙。为了获取办公室的钥匙卡或家中的钥匙,您首先需要证明您是谁,并且您确实可以访问该令牌。这可能是一些简单的事情,比如向某人展示你的ID或给他们一个秘密密码。想象一下我需要进入我的办公室。我去保安办公室,给他们看我的身份证,他们给了我这个令牌,让我进入大楼。现在我可以不受限制地在大楼里做任何我想做的事情,只要我带着我的代币。

基于令牌的安全性有什么好处?

回想一下不安全API,在这种情况下,我们必须为我们想做的所有事情提供密码。

想象一下,每当我们进入办公室的一扇门,我们必须给坐在门旁边的每个人我们的密码。这很糟糕,因为这意味着我们办公室里的任何人都可以得到我们的密码并冒充我们,这很糟糕。相反,我们所做的是检索令牌,当然还有密码,但我们从一个人那里检索。然后我们可以在大楼的任何地方使用这个令牌。当然,如果我们丢失了令牌,我们就会遇到与其他人知道我们的密码相同的问题,但这就导致了我们如何确保如果我们丢失了令牌,我们可以撤销访问权限,也许令牌的有效期不应该超过24小时,所以第二天我们来到办公室,我们需要再次显示我们的ID。但是,我们仍然只向一个人展示ID,那就是坐在我们取回代币的地方的保安。