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

时间:2009-10-20 04:56:40

标签: security authentication token http-token-authentication

我想了解基于令牌的身份验证的含义。我搜索了互联网,但找不到任何可以理解的内容。

9 个答案:

答案 0 :(得分:493)

我认为很好地解释了here - 引用了长文章的关键句子:

  

背后的一般概念   基于令牌的身份验证系统   简单。允许用户输入他们的   用户名和密码以便   获得允许他们的令牌   获取特定资源 - 没有   使用他们的用户名和密码。   获得令牌后,   用户可以提供令牌 - 哪个   提供对特定资源的访问   一段时间 - 到遥控器   站点。

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

优点很多 - 例如,用户可以在获得令牌后将令牌传递给他们愿意在有限的时间和有限的资源集合中信任的其他自动化系统,但是愿意信任他们的用户名和密码(即,他们被允许访问的所有资源,永远或至少在他们更改密码之前)。

如果仍然不清楚,请编辑您的问题以澄清您不能100%明白的事情,我相信我们可以为您提供进一步的帮助。

答案 1 :(得分:163)

来自Auth0.com

  

基于令牌的身份验证,依赖于发送到的签名令牌   每个请求上的服务器。

     

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

     
      
  • 跨域/ CORS: Cookie + CORS不能在不同的域中发挥良好作用。基于令牌的方法允许您制作AJAX   因为您使用HTTP标头,所以在任何域上调用任何服务器   发送用户信息。

  •   
  • 无状态(a.k.a.服务器端可伸缩性):不需要保留会话存储,该令牌是一个传递所有用户信息的自包含实体。该州的其他地方居住在客户端的cookie或本地存储中。

  •   
  • CDN:您可以通过CDN(例如javascript,HTML,图片等)提供应用的所有资源,而您的服务器端只是API。

  •   
  • 解耦:您不依赖于任何特定的身份验证方案。令牌可能在任何地方生成,因此您的API可以   可以通过单一方式对这些进行身份验证   呼叫。

  •   
  • 移动就绪:当您开始使用原生平台(iOS,Android,Windows 8等)时,使用Cookie时,Cookie并不理想   基于令牌的方法简化了这一点。

  •   
  • CSRF:,因为您不依赖Cookie,因此您不需要防范跨网站请求(例如,不可能   同意您的站点,生成POST请求并重新使用现有的身份验证cookie,因为没有。)

  •   
  • 效果:我们这里没有提供任何硬性基准测试,而是网络往返(例如在数据库上查找会话)   可能比计算HMACSHA256需要更多的时间   验证令牌并解析其内容。

  •   

答案 2 :(得分:90)

token是一段只有Server X可能已创建的数据,其中包含足以识别特定用户的数据。

您可以提供您的登录信息,并向Server X询问token;然后,您可以展示自己的token并要求Server X执行某些特定于用户的操作。

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

答案 3 :(得分:40)

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

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

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

服务验证令牌后,它用于为客户端建立安全上下文,因此服务可以为连续的用户请求做出授权决策或审核活动。

visit the source

答案 4 :(得分:21)

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

意味着为了让我们证明我们已经访问,我们首先必须接收令牌。在现实生活中,令牌可能是建筑物的入口卡,它可能是锁定房屋的钥匙。为了让您检索办公室的钥匙卡或家中的钥匙,您首先需要证明您的身份,并且您实际上确实可以访问该令牌。它可能就像向某人显示您的ID或给他们一个秘密密码一样简单。所以想象一下,我需要进入我的办公室。我去安全办公室,向他们展示我的身份证,他们给了我这个令牌,让我进入大楼。现在我可以不受限制地在建筑物内做任何我想做的事情,只要我有我的令牌。

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

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

想象一下每次我们进入办公室的门时,我们都必须给坐在门口的每个人密码。现在这将是非常糟糕的,因为这意味着我们办公室内的任何人都可以拿走我们的密码并冒充我们,这非常糟糕。相反,我们所做的是我们检索令牌,当然还有密码,但我们从一个人那里检索。然后我们可以在建筑物内的任何地方使用此标记。当然,如果我们丢失令牌,我们就会遇到同样的问题,就好像其他人知道我们的密码一样,但这会导致我们如何确保如果我们丢失令牌,我们可以撤销访问权限,也可能撤销令牌不应该活超过24小时,所以第二天我们来办公室,我们需要再次显示我们的身份证。但是,我们只会向一个人展示身份证,这就是我们检索令牌的保安人员。

答案 5 :(得分:14)

问题是旧的,技术已经发展,现在是目前的状态:

JSON Web Token(JWT)是一种基于JSON的开放标准(RFC 7519),用于在Web应用程序环境中的各方之间传递声明。令牌设计紧凑,URL安全,尤其适用于Web浏览器单点登录(SSO)环境。

https://en.wikipedia.org/wiki/JSON_Web_Token

答案 6 :(得分:3)

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

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

答案 7 :(得分:1)

如今,保护Web API资源安全的首选方法是使用需要由客户端发送到服务器的签名令牌(包含足以标识特定用户的信息)来对Web API服务器中的用户进行身份验证。每个请求。这称为基于令牌的身份验证方法。

基于令牌的身份验证如下:

用户将名称和密码输入客户端(客户端表示浏览器或移动设备等)。

然后,客户端将这些凭据(即用户名和密码)发送到授权服务器。

然后,授权服务器对客户端凭据(即用户名和密码)进行身份验证,然后生成并返回访问令牌。该访问令牌包含足以识别用户的信息,还包含令牌的到期时间。

然后,客户端应用程序将访问令牌包含在HTTP请求的“授权”标头中,以从资源服务器访问受限制的资源,直到令牌过期为止。

下面的文章逐步介绍了如何在WEB API中实现基于令牌的身份验证。

https://dotnettutorials.net/lesson/token-based-authentication-web-api/

答案 8 :(得分:0)

当您注册新网站时,通常会向您发送一封电子邮件以激活您的帐户。该电子邮件通常包含单击的链接。该链接的一部分包含令牌,服务器知道此令牌并可将其与您的帐户相关联。令牌通常具有与之关联的到期日期,因此您可能只有一个小时点击该链接并激活您的帐户。使用cookie或会话变量无法做到这一点,因为它不知道客户用来检查电子邮件的设备或浏览器。