Bearer身份验证机制

一、介绍

  Bearer 是一种身份验证机制,通常用于 Web API 中的授权。它是 OAuth 2.0 协议的一部分,用于允许客户端应用程序代表用户访问受保护的资源。

  1. 令牌类型

    • Bearer 通常指代一种 "Bearer Token"(承载令牌)。这是一种由授权服务器颁发的不携带身份信息的令牌。
    • 客户端在请求 API 时会将这个令牌作为身份凭证传递给服务器。
  2. 格式

    • Bearer 令牌通常是在 HTTP 请求的 Authorization 头中传递,格式为:
      Authorization: Bearer <token>
    • 其中 <token> 是实际的令牌字符串。
  3. 安全性

    • Bearer 令牌的使用意味着持有该令牌的任何人都可以访问与之关联的资源。因此,保护令牌的安全性至关重要,最好通过 HTTPS 进行传输以防止被窃取。
    • 一旦令牌被泄露,攻击者就可以伪装成合法用户进行操作。
  4. 过期和刷新

    • Bearer 令牌通常是有过期时间的,一旦过期,客户端需要重新进行身份验证或使用刷新令牌来获取新的 Bearer 令牌。

二、应用场景

  • API 调用:当客户端应用程序需要调用一个受保护的 API 时,它可以通过发送 Bearer Token 来证明其身份。例如,移动应用、前端 SPA 应用等。
  • 单点登录 (SSO):使用 OAuth 2.0 和 Bearer Token 的许多现代认证系统支持单点登录,用户仅需一次身份验证即可访问多个服务。

三、示例

假设你有一个 API 端点 /api/user,要访问这个端点,需要携带 Bearer Token。示例 HTTP 请求如下:

在这个请求中,ABCDEFGH... 就是你的 Bearer Token,服务器收到请求后会检查这个令牌是否合法,并决定是否授予访问权限。

GET /api/user HTTP/1.1
Host: example.com
Authorization: Bearer ABCDEFGHIJKLMNOPQRSTUVWXYZ

实际使用过的示例:

比如在对axios二次封装时,在config配置时,可以在请求发送之前为请求头添加上Bearer令牌,而其后跟着就是token作为身份验证信息。

// request拦截器,在请求之前做一些处理
instance.interceptors.request.use(
	config => {
		if (store.state.access_token) {
			config.headers.Authorization = `Bearer ${store.state.access_token}`
		}
		return config;
	},
	error => {
		console.log(error); // for debug
		return Promise.reject(error);
	}
)

四、常见的Authorization类型

  1. Basic Authentication

    • 格式:Authorization: Basic <base64_encoded_credentials>
    • 示例:Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
  2. Bearer Token

    • 格式:Authorization: Bearer <token>
    • 示例:Authorization: Bearer ABCDEFGHIJKLMNOPQRSTUVWXYZ
  3. Token Authentication(自定义)

    • 格式:Authorization: Token <token>
    • 示例:Authorization: Token ABCDEFGHIJKLMNOPQRSTUVWXYZ
  4. Digest Authentication

    • 格式:Authorization: Digest <parameters>
    • 示例:Authorization: Digest username="username", realm="realm", nonce="nonce", uri="uri", response="response"
  5. OAuth 1.0a

    • 格式:Authorization: OAuth <parameters>
    • 示例:Authorization: OAuth oauth_consumer_key="key", oauth_token="token", oauth_signature="signature"
  6. Hawk Authentication

    • 格式:Authorization: Hawk <parameters>
    • 示例:Authorization: Hawk id="id", timestamp="timestamp", nonce="nonce", mac="mac"
  7. AWS Signature Version 4

    • 格式:Authorization: AWS4-HMAC-SHA256 <parameters>
    • 示例:Authorization: AWS4-HMAC-SHA256 Credential=<access-key-id>/<date>/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=<signature>
  8. Bearer + Custom Variants

    • 一些系统可能会扩展标准 Bearer 令牌,使用自定义前缀。
    • 示例:Authorization: MyCustomBearer <token>
  9. JWT (JSON Web Token)

    • 尽管它通常也被视为 Bearer 令牌,但有时 JWT 会明确标出。
    • 格式:Authorization: Bearer <JWT>
    • 示例:Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
  10. Custom Schemes

    • 某些 API 可能实现自定义的身份验证方式,例如:
    • 示例:Authorization: MyCustomAuth <credentials>

        这些是最常见的 Authorization 头部类型,每种类型都有其特定的用途和实现方式。在设计 API 或进行身份验证时,应根据需求选择合适的类型,并确保使用 HTTPS 以增强安全性

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值