什么是基于令牌的认证?
我想了解什么基于令牌的认证意味着什么。 我搜索了互联网,但找不到任何可以理解的东西。
我认为这里很好解释 - 引用长篇文章的关键句子:
基于令牌的认证系统背后的一般概念很简单。 允许用户输入他们的用户名和密码,以便获取令牌,以便他们获取特定资源 - 不使用他们的用户名和密码。 一旦他们的令牌被获得,用户就可以向远程站点提供令牌 - 其提供对特定资源一段时间的访问权。
换句话说:为身份验证添加一个间接级别 - 而不必使用每个受保护资源的用户名和密码进行身份验证,用户通过一次身份验证(在有限持续时间的会话中),获取时间受限的令牌作为回报,并在会话期间使用该令牌进行进一步的身份验证。
有许多优势-例如,用户可以通过该令牌,一旦他们知道的话,就到一些其他自动系统,他们愿意在有限的时间和有限的资源的信任,但不会愿意信任他们的用户名和密码(即,他们被允许访问的每个资源,永远或至少在他们改变密码之前)。
如果还有什么不清楚的地方,请编辑您的问题以澄清什么不是100%清楚,我相信我们可以进一步帮助您。
来自Auth0.com
基于令牌的身份验证依赖于每个请求上发送给服务器的签名令牌。
使用基于令牌的方法有什么好处?
跨域/ CORS: Cookie + CORS在不同领域的表现不佳。 基于令牌的方法允许您在任何域上对任何服务器进行AJAX调用,因为您使用HTTP标头传输用户信息。
无状态(又名服务器端可扩展性):不需要保留会话存储,该令牌是传递所有用户信息的独立实体。 州内其他地方居住在客户端的Cookie或本地存储中。
CDN:您可以从CDN提供应用程序的所有资源(例如,JavaScript,HTML,图像等),而您的服务器端只是API。
解耦:您不受任何特定身份验证方案的束缚。 令牌可能在任何地方生成,因此可以使用单一方式验证这些调用,从任何地方调用API。
移动就绪:当你开始在本地平台(iOS,Android,Windows 8等)上工作时,使用基于令牌的方法简化了很多操作。
CSRF:由于您不依赖于cookie,因此您无需保护跨站点请求(例如,您不可能与您的站点同步,生成POST请求并重新使用现有身份验证Cookie,因为它们不会存在)。
性能:我们在这里没有提供任何硬性性能基准测试,但是网络往返(例如查找数据库会话)可能比计算HMACSHA256需要更多的时间来验证令牌并解析其内容。
token
是只有Server X
可能已经创建并且包含足够数据以识别特定用户的一段数据。
您可能会显示您的登录信息并向Server X
请求token
; 然后您可能会出示您的token
并要求Server X
执行某些用户特定的操作。
Token
s是使用来自密码学领域的各种技术的各种组合以及来自更广泛的安全研究领域的输入创建的。 如果你决定去创建自己的token
系统,那么你最好真的很聪明。