我想了解基于令牌的身份验证意味着什么。我在网上搜索了一下,但找不到任何可以理解的东西。
当前回答
我认为这里已经解释得很好了——只是引用了这篇长文的关键句子:
a背后的一般概念 基于令牌的认证系统是 简单。允许用户输入他们的 用户名和密码,以便 获得一个令牌,允许他们这样做 获取一个特定的资源-没有 使用用户名和密码。 一旦获得了他们的令牌, 用户可以提供令牌 提供对特定资源的访问 在一段时间内,对着遥控器 网站。
换句话说:为身份验证添加一个间接级别——用户不必为每个受保护的资源使用用户名和密码进行身份验证,而是以这种方式进行一次身份验证(在有限持续时间的会话内),获得一个有时间限制的令牌作为回报,并在会话期间使用该令牌进行进一步的身份验证。
好处有很多——例如,用户一旦获得令牌,就可以将令牌传递给其他一些自动化系统,他们愿意在有限的时间和有限的资源集内信任这个系统,但不愿意信任他们的用户名和密码(即,他们被允许访问的每一个资源,永远或至少直到他们更改密码)。
如果还有什么不清楚的地方,请编辑你的问题,澄清你不是100%清楚的东西,我相信我们可以进一步帮助你。
其他回答
我认为这里已经解释得很好了——只是引用了这篇长文的关键句子:
a背后的一般概念 基于令牌的认证系统是 简单。允许用户输入他们的 用户名和密码,以便 获得一个令牌,允许他们这样做 获取一个特定的资源-没有 使用用户名和密码。 一旦获得了他们的令牌, 用户可以提供令牌 提供对特定资源的访问 在一段时间内,对着遥控器 网站。
换句话说:为身份验证添加一个间接级别——用户不必为每个受保护的资源使用用户名和密码进行身份验证,而是以这种方式进行一次身份验证(在有限持续时间的会话内),获得一个有时间限制的令牌作为回报,并在会话期间使用该令牌进行进一步的身份验证。
好处有很多——例如,用户一旦获得令牌,就可以将令牌传递给其他一些自动化系统,他们愿意在有限的时间和有限的资源集内信任这个系统,但不愿意信任他们的用户名和密码(即,他们被允许访问的每一个资源,永远或至少直到他们更改密码)。
如果还有什么不清楚的地方,请编辑你的问题,澄清你不是100%清楚的东西,我相信我们可以进一步帮助你。
从Auth0.com
Token-Based Authentication, relies on a signed token that is sent to the server on each request. What are the benefits of using a token-based approach? Cross-domain / CORS: cookies + CORS don't play well across different domains. A token-based approach allows you to make AJAX calls to any server, on any domain because you use an HTTP header to transmit the user information. Stateless (a.k.a. Server side scalability): there is no need to keep a session store, the token is a self-contained entity that conveys all the user information. The rest of the state lives in cookies or local storage on the client side. CDN: you can serve all the assets of your app from a CDN (e.g. javascript, HTML, images, etc.), and your server side is just the API. Decoupling: you are not tied to any particular authentication scheme. The token might be generated anywhere, hence your API can be called from anywhere with a single way of authenticating those calls. Mobile ready: when you start working on a native platform (iOS, Android, Windows 8, etc.) cookies are not ideal when consuming a token-based approach simplifies this a lot. CSRF: since you are not relying on cookies, you don't need to protect against cross site requests (e.g. it would not be possible to sib your site, generate a POST request and re-use the existing authentication cookie because there will be none). Performance: we are not presenting any hard perf benchmarks here, but a network roundtrip (e.g. finding a session on database) is likely to take more time than calculating an HMACSHA256 to validate a token and parsing its contents.
令牌是一段只有Server X可能创建的数据,它包含足够的数据来识别特定的用户。
您可以提供您的登录信息并向服务器X请求一个令牌;然后您可以呈现您的令牌,并要求服务器X执行一些特定于用户的操作。
令牌是使用来自密码学领域的各种技术的各种组合以及来自更广泛的安全研究领域的输入来创建的。如果你决定创建自己的代币系统,你最好非常聪明。
它只是哈希与数据库中的用户或其他方式相关联。该令牌可用于身份验证,然后授权用户访问应用程序的相关内容。要在客户端检索此令牌,需要登录。第一次登录后,你需要保存检索到的令牌,而不是任何其他数据,如会话,会话id,因为这里的一切都是令牌,以访问应用程序的其他资源。
令牌用于确保用户的真实性。
更新: 目前,我们有更先进的基于令牌的技术,称为JWT (Json Web令牌)。这种技术有助于在多个系统中使用相同的令牌,我们称之为单点登录。
基本上,基于JSON的令牌包含用户详细信息和令牌到期详细信息。因此,如果令牌无效或过期,可以根据详细信息使用该信息进一步验证或拒绝请求。
问题老了,技术先进了,现在的状态是这样的:
JSON Web Token (JWT)是一个基于JSON的开放标准(RFC 7519),用于在Web应用程序环境中在各方之间传递声明。令牌的设计是紧凑的,url安全的和可用的,特别是在web浏览器单点登录(SSO)上下文中。
https://en.wikipedia.org/wiki/JSON_Web_Token
推荐文章
- 摘要认证和基本认证的区别是什么?
- 浏览器会通过https缓存内容吗
- 什么是端点?
- 配置系统初始化失败
- 在git存储库中处理密码的最佳实践是什么?
- 支付处理器-如果我想在我的网站上接受信用卡,我需要知道什么?
- 在Subversion中,我可以是我的登录名以外的用户吗?
- 如何加密和解密一个PHP字符串?
- 使用80端口运行Node.js时的最佳实践(Ubuntu / Linode)
- 使用PHP进行最简单的双向加密
- 认证授权失败时,AuthorizeAttribute为什么会重定向到登录页面?
- JWT刷新令牌流
- 将Keypair添加到现有的EC2实例中
- 身份验证:JWT使用vs会话
- 什么是回跳线?它是如何工作的?