前后端鉴权比较表

171 阅读5分钟
鉴权方案介绍优点缺点
HTTP Basic Authenticaction基于HTTP协议的基本认证方式,客户端通过Authorization头发送用户名和密码的Base64编码给服务器,服务器验证通过后返回数据简单易用、无需额外的存储或者运输不安全、用户名和密码容易被截获或破解、无法注销或控制权限
Session-Cookie基于会话的认证方式,客户端首次登录时,服务器生成一个sessionId并存储在cookie中,客户端每次请求时携带cookie,服务器验证session id是否有效安全性较高、可以存储用户信息和状态,可以注销或控制权限需要额外的存储空间、需要跨域处理,不适合分布式或微服务架构
Token基于令牌的方认证方式,客户端每次登陆时,服务器生成一个token并返回给客户端,客户端每次请求时携带token,服务器验证token是否有效无需额外的存储空间,适合跨域和分布式或微服务架构,可以设置过期时间和权限范围需要额外的传输开销,无法主动注销或更新权限,需要防止泄漏或篡改
OAuth开放授权方式,允许第三方应用在用户授权的情况下访问受保护的资源,使用授权码、访问令牌和刷新令牌等机制进行认证和授权可以实现第三方登录和授权,安全性较高,可以设置过期时间和权限范围实现复杂、需要多个角色和流程参与,不适合自由系统的认证
API Key基于密钥的认证方式,客户端在请求时携带一个由服务端分配的唯一密钥,服务端验证密钥是否有效简单易用、适合公开的API不安全、密钥容易被截获或破解,无法注销或控制权限
JWT基于JSON Web Token 的认证方式,客户端首次登录时,服务器生成一个包含用户和过期时间的JWT并返回给客户端,客户端每次请求时携带JWT,服务器验证JWT是否有效和过期无需额外的存储空间,适合跨域、分布式或微服务架构,可以存储用户信息和状态,可以设置过期时间和权限范围需要额外的传输开销,无法主动注销或更新权限,需要防止泄漏和篡改
签名基于签名的认证方式,客户端在请求时对请求参数进行加密或哈希,并携带签名和时间戳,服务端验证签名和时间戳是否有效、过期安全性较高,可以防止数据篡改或重放攻击实现复杂,需要中心认证服务器和票据机制
SSO单点登录方式,允许用户在一个系统登录后,无需再次登录就可以访问其他系统,使用中心认证服务器和票据等机制实现可以实现多系统的单点登录和注销,提高用户体验和安全性实现复杂,需要中心认证服务器和票据机制
CAS基于票据的认证方式,客户端在请求时携带一个由服务端签发的票据,服务端验证票据是否有效和过期安全性较高、可以实现多系统的单点登和注销,提高用户体验和安全性实现复杂,需要中心认证服务器和票据机制
OAuth2基于OAuth协议的认证方式,客户端在请求时携带一个由授权服务器颁发的访问令牌,资源服务器验证令牌是否有效和过期可以实现第三方登录和授权、安全性较高,可以设置过期时间和权限范围,并获取用户信息实现复杂,需要多个角色和流程参与,不适合自有系统的认证
OpenID Connect基于OAuth2协议的认证方式,客户端在请求时携带一个由授权服务器办法的ID令牌,资源服务器验证令牌是否有效和过期,并获取用户的身份信息可以实现第三方登录和授权,安全性较高,可以设置过期时间和权限范围,并获取用户信息实现复杂、需要多个角色和流程参与,不适合自由系统的认证
LDAP基于目录服务的认证方式,客户端在请求时携带用户名和密码,服务端通过LDAP协议查询目录服务器中的用户信息,验证用户名和密码是否正确安全性较高,可以实现目录服务的统一管理和查询用户的信息实现复杂,需要目录服务器和LDAP协议
Kerberos基于票据的认证方式,客户端在请求时携带一个由认证中颁发的票据,服务端验证票据是否有效和过期,并获取用户的身份信息安全性较高,可以实现多系统的单点登录和注销,并获取用户身份信息实现复杂,需要认证中心和票据机制

不同的鉴权方案有各自的优缺点,适用于不同的场景和需求,使用起来方便的鉴权方案可能会牺牲一些安全性或灵活性,反之亦然。

需要综合考虑以下因素:

  • 客户端和服务端的类型和数量:例如,是否有多个客户端或服务端,是否有第三方应用或资源,是否有跨域或跨平台的需求
  • 用户和数据的敏感性和保护性:例如,是否涉及到个人隐私以及敏感信息,是否需要防止数据篡改或泄漏,是否需要遵守相关的法律法规等
  • 系统的性能和可扩展性: 例如,是否需要支持高并发或大规模的请求,是否需要减少网络开销或者服务器负载,是否需要支持动态的用户或资源等