繁体   English   中英

会话和基于令牌的身份验证之间的技术差异

[英]Technical difference between session and token based auth

我在写单身汉时需要找出哪种认证/授权方法最适合与我合作的公司。

因此,我一直在比较基于会话和基于令牌的身份验证方法,但对于令牌如何工作以及它们比会话身份验证如何好,我仍然不清楚一些要点:

我唯一清楚地看到100%的好处是,可以从没有cookie存储的客户端使用令牌,并且可以将令牌与不同的子域和完全独立的域一起使用,因为这不会阻止浏览器的CORS策略。

  • 我读到所有cookie随每个请求一起发送到原始域(除非cookie被设置为仅通过安全连接发送),这意味着令牌将在请求中出现两次,除非您当然进行身份验证来自其他域的用户。 这是正确的假设吗?
  • 令牌如何在服务器端验证? 解密后,是否会根据用户名,密码和私钥/私钥进行检查,还是仅在此处使用的私钥/私钥?
  • 如果我在未对它们进行身份验证的服务器上为某个资源进行授权时需要用户名/用户ID,如果我没有原始用户数据可用来检查,我是否可以盲目地信任那些凭据?

最后,许多文章声称令牌可以抵御CSRF。

从这篇文章:

CSRF:我们还将提供针对跨站点请求伪造(CSRF)的保护。 用户很容易受到CSRF攻击,因为他们已经可以通过银行站点进行身份验证,并且可以在访问其他站点时加以利用。”

这对我来说绝对没有意义。 似乎他是在说类似OAuth的系统会阻止CSRF? 我对CSFR的工作原理不甚了解,所以在这里可能是空白的我,但据我所知,会话或令牌都无法防止这种情况发生,因为每个请求都不是唯一的。

编辑:我刚刚意识到令牌可能阻止CSFR的原因是,如果另一个站点设法从浏览器向服务器提交表单,则浏览器不会自动发送该令牌。 但是,这意味着如果从服务器上的cookie头中提取令牌,则很容易受到攻击,如果使用JWT,则不会有问题,因为它使用了自己的“ Authorization”头,必须与JS一起设置。 但这仍然使scotch.io文章声称对我来说似乎是胡说八道。

检查Cookie与令牌:《权威指南》 ,对传统的基于cookie的身份验证系统和最新基于令牌的系统的特征进行了很好的总结。

基于TL; DR令牌的身份验证比以往任何时候都更加重要。 我们研究了cookie和基于令牌的身份验证之间的异同,使用令牌的优势,并解决了开发人员对基于令牌的身份验证的常见问题和疑虑。

我不是这个确切术语的忠实拥护者,因为您实际放置在Cookie中的内容也可以被视为令牌。 在大多数情况下,它是一个按引用令牌,它映射到某些服务器端数据,而所谓的基于令牌的身份验证则支持按值令牌(JWT- Learn JSON Web Tokens ),该值令牌在令牌本身中携带数据。

JSON Web令牌(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。 由于此信息是经过数字签名的,因此可以被验证和信任。

这些按值令牌的验证通过签名来完成,这些签名确保令牌是由持有签名时使用的关联密钥的实体创建的,并且在不了解密钥的情况下,其他任何人都无法篡改内容。 该前提是信任收到的令牌的基础。

对于CSRF,确实是基于令牌的系统可以缓解这种情况,因为与cookie所发生的情况相反,浏览器不会自动发送这些令牌凭据 (假定令牌未作为co​​okie包含在请求中)。

想象以下情况,应用程序CK公开受会话cookie保护的资源,而应用程序TK公开受令牌保护的资源。

用户X在两个应用程序中都进行身份验证,因此将为应用程序CK发出会话cookie,并为应用程序TK发出令牌。 如果攻击者创建了恶意站点EV并诱骗用户X访问它,则它可以从用户的浏览器中向应用程序CKTK执行自动请求。

但是,对于应用程序CK ,用户X的浏览器将自动包含会话cookie,因此,恶意站点EV刚刚访问了受保护的资源,而对于应用程序TK的请求,浏览器将不会自动包含令牌。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM