认证、授权、凭证

认证:验证“你是谁”。

授权:决定“你能做什么”。

凭证:用于证明身份的证据或数据。

认证

认证是验证用户身份的过程,即确认用户是否是他声称的那个人。常见的认证方法包括:

  • 用户名和密码:最常见的认证方式,用户通过输入注册时设置的用户名和密码来证明身份。
  • 双因素认证(2FA):在用户名和密码的基础上,还要求输入第二种验证方式,如手机短信验证码或硬件令牌。
  • 生物识别:如指纹识别、面部识别、虹膜识别等。
  • OAuthOpenID等第三方认证:用户通过第三方平台(如Google、Facebook)登录。

授权

授权是指在用户通过认证后,系统决定其是否有权限访问特定资源或执行某些操作的过程。换句话说,授权决定了用户“能做什么”。授权通常在认证之后进行,确保只有经过验证的用户才能被赋予相应权限。

例如,在一个系统中,管理员用户可能有权查看、编辑和删除所有数据,而普通用户可能只被授权查看和编辑自己的数据。

凭证

凭证是用户用来证明自己身份的证据或数据。在认证过程中,凭证通常包括用户名和密码组合、令牌(token)、API密钥、证书等。凭证的安全管理非常重要,因为一旦凭证泄露,攻击者就可能冒充合法用户进行未经授权的操作。

  • 会话凭证:例如,在Web应用中,用户登录后生成的会话ID。
  • OAuth令牌:例如,在OAuth协议中使用的访问令牌,用于授权和访问受保护的资源。

鉴权方式

Basic认证

介绍:

  • Basic认证是HTTP协议的一部分,使用Base64编码将用户名和密码组合传递给服务器。客户端通过在每次请求中添加 Authorization 头来传递这些凭据。

优点:

  • 简单易用,浏览器和许多HTTP客户端原生支持。

缺点:

  • 安全性较低,除非在HTTPS下使用,否则容易被中间人攻击窃取凭据。

图自https://www.geeksforgeeks.org/basic-authentication-in-node-js-using-http-header/

介绍:

  • Cookie 是由服务器生成并发送到客户端的小型数据文件,客户端在随后的请求中自动发送这些文件。它们用于存储用户会话状态、身份标识或其他数据。

优点:

  • 持久性强,可以跨会话保存数据。可以设置过期时间、作用域等。

缺点:

  • 容易被劫持(如跨站脚本攻击XSS)
  • 不支持跨域
  • 存储的数据量有限,一般不超过4KB
  • 安全性依赖于HTTPS和HttpOnly标志

图自https://www.baeldung.com/cs/browser-cookie-domains

Session

介绍:

  • Session 是服务器端存储的用户会话信息。是基于Cookie的实现的,Session保存在服务端,Session ID保存在客户端的Cookie中,服务器端通过该ID来查找和识别用户会话数据。

优点:

  • 安全性高,敏感数据存储在服务器端。

缺点:

  • 需要管理服务器端的会话状态,消耗服务器资源。对于分布式应用,需要处理Session共享问题。

图自https://www.51cto.com/article/743780.html

Token

介绍:

  • Token认证通过生成一个Token(如JWT),客户端在每次请求时携带该Token。服务器根据Token的内容和签名来验证用户身份,无需在服务器端存储会话数据。

优点:

  • 无状态认证,适合分布式系统和微服务架构
  • Token可以携带更多的用户信息
  • 支持跨域访问
  • 更适用于移动应用
  • 不存在CSRF漏洞

缺点:

  • 一般存放于 localStorage 中,存在XSS漏洞时很容易被盗取
  • Token一旦泄露,可能会导致安全问题。需要管理Token的生命周期(如过期时间、刷新等)

图自https://blog.csdn.net/Tuking_Franz/article/details/76923118

SSO(单点登录)

介绍:

  • 单点登录允许用户在一个系统中登录后,自动获得访问其他相关系统的权限。常通过OAuth、SAML等协议实现。

优点:

  • 提高用户体验,减少多次登录的繁琐。
  • 提高安全性,便于管理

缺点:

  • 实施复杂,涉及多个系统之间的信任关系。如果中央认证系统被攻破,所有相关系统都会受影响。

图自https://www.okta.com/blog/2021/02/single-sign-on-sso/

OAuth

介绍:

  • OAuth(Open Authorization、开放授权协议) 是一种授权框架,允许用户授权第三方应用访问他们的资源,而不暴露其密码等核心信息。OAuth 2.0是当前广泛使用的版本,通常用于社交登录等场景。
  • 例如,在第三方网站上使用微信或者QQ作为账号进行登录,就是使用的oauth协议,只返回给第三方诸如用户名、头像等信息,而不会返回给第三方密码等核心数据。

优点:

  • 安全性强,用户可以授权特定权限,保护敏感数据。

缺点:

  • 比较复杂,涉及多个步骤和角色(如资源所有者、客户端、认证服务器、资源服务器)。

图自https://learn.microsoft.com/zh-tw/entra/architecture/auth-oauth2

Copyright © d4m1ts 2023 all right reserved,powered by Gitbook该文章修订时间: 2024-08-04 14:43:11

results matching ""

    No results matching ""