前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Web 认证机制相关概念解析

Web 认证机制相关概念解析

原创
作者头像
蚂蚁蚂蚁
发布2024-04-01 17:04:19
730
发布2024-04-01 17:04:19
举报
文章被收录于专栏:技术分享技术分享

在 Web 开发中,我们经常会遇到各种各样的认证机制的概念和名词,如 Cookies、Session、Token、SSO(Single Sign-On)和 OAuth 2.0 等,下面详细解释一下它们之间的联系与异同

Cookies

Cookies 是一种用于服务器与浏览器交换数据的方式。当服务器响应时,它会通过 Set-Cookie 的 HTTP header 写入浏览器。然后,浏览器在每次请求时会自动在 header 中带上 cookies。当我们设置 cookie 时,可以设置过期时间、域名、路径、HttpOnly 等条件,只有满足这些条件的请求才会带上该 cookie。

例如,当用户登录一个网站后,服务器可以设置一个包含用户 ID 的 cookie,然后浏览器在后续的每次请求中都会带上这个 cookie,服务器就可以通过这个 cookie 来识别用户。

Session

由于 HTTP 请求是无状态的,如果我们需要在多次请求中保持用户状态,就需要额外的数据。这个数据可以是一个随机的字符串(Session ID),这样带有同样 Session ID 的请求就可以被关联为同一个会话。Session ID 的交互可以用 set cookie 的方式实现。

例如,当用户登录一个网站后,服务器可以生成一个 Session ID 并通过 cookie 发送给浏览器,然后浏览器在后续的每次请求中都会带上这个 Session ID,服务器就可以通过这个 Session ID 来识别用户。

Token

Token 是客户端发送请求时携带的凭证,用于表明自己的身份(Authentication)。常见的 tokens 有两种:

  • 随机字符串:通过服务端生成随机字符串(Session ID),然后通过 Set-Cookie 写入客户端的浏览器作为 token 的形式,每次请求会在 header 中的 cookie 带上该 token/session id。
  • JWT:一种按照 JWT 通用协议签名过的信息,base64 解码后为 JSON 格式。

例如,当用户登录一个网站后,服务器可以生成一个 JWT token,并将其发送给浏览器。然后浏览器在后续的每次请求中都会带上这个 JWT token,服务器就可以通过这个 JWT token 来识别用户。

SSO (Single Sign-On)

SSO 是一种一次登录后通过 token 访问多个业务的机制。用户只需要在一个系统中登录一次,就可以在其他多个系统中自由访问,无需再次登录,大大提高了用户体验。

例如,Google 的各种服务(如 Gmail、Google Drive、Google Photos 等)就使用了 SSO。用户只需要登录一次 Google 账号,就可以访问 Google 的所有服务。

OAuth 2.0

OAuth 2.0 是一种授权机制。当用户在访问 A 应用时需要使用 B 应用的数据,用户可以通过获取 B 应用的授权 token,然后授权给 A 应用使用该 token 获取 B 应用的数据。

例如,用户在使用一个日历应用时,可能需要访问他在 Google 日历上的数据。这时,用户可以通过 OAuth 2.0 获取 Google 日历的授权 token,然后将这个 token 授权给日历应用,日历应用就可以使用这个 token 来获取 Google 日历的数据。

以上就是关于 Cookies、Session、Token、SSO 和 OAuth 2.0 的详细介绍。希望通过这篇文章,能帮助大家更好地理解和使用这些 Web 认证机制。

概念辨析

Cookies vs Session

Cookies 和 Session 都是用于在无状态的 HTTP 请求中保存状态信息的机制。但它们的工作方式有所不同。

Cookies 是存储在客户端(浏览器)的小段数据,服务器可以通过 Set-Cookie HTTP header 将数据写入 Cookies。而 Session 是存储在服务器端的数据,它通过在 Cookies 中保存一个 Session ID 来关联客户端和服务器端的数据。

因此,Cookies 的主要问题是容量有限(每个域名下最多只能存储 20 个 Cookies,每个 Cookie 大小不能超过 4KB),而 Session 的主要问题是如果用户数量过多,会占用大量服务器资源。

Token vs Cookies/Session

Token 和 Cookies/Session 都是用于认证用户身份的机制。但它们的工作方式有所不同。

Cookies/Session 是通过在服务器端保存用户状态信息来实现认证的,而 Token(如 JWT)则是无状态的,它将用户状态信息加密后直接存储在 Token 中,服务器不需要保存任何用户状态信息。

因此,Token 的主要优点是可以跨域(Cookies 在跨域场景下有很多限制),并且服务器不需要保存状态信息,可以轻松实现水平扩展。

SSO vs Cookies/Session/Token

SSO(Single Sign-On)是一种允许用户在多个应用之间共享认证状态的机制,它通常基于 Cookies/Session 或 Token 实现。

与 Cookies/Session/Token 只能在单个应用中保存用户状态不同,SSO 允许用户在多个应用之间共享认证状态,用户只需要登录一次,就可以访问所有连接的应用。

OAuth 2.0 vs Cookies/Session/Token

OAuth 2.0 是一种授权机制,它允许用户将他们在一个应用中的权限(如访问数据的权限)授权给另一个应用。

与 Cookies/Session/Token 只能用于认证用户身份不同,OAuth 2.0 可以用于授权,它允许用户将他们在一个应用中的权限授权给另一个应用。

以上就是关于 Cookies、Session、Token、SSO 和 OAuth 2.0 的对比与差异。希望通过这篇文章,能帮助大家更好地理解和使用这些 Web 认证机制。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Cookies
  • Session
  • Token
  • SSO (Single Sign-On)
  • OAuth 2.0
  • 概念辨析
    • Cookies vs Session
      • Token vs Cookies/Session
        • SSO vs Cookies/Session/Token
          • OAuth 2.0 vs Cookies/Session/Token
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档