HTTP Token 使用方式: Basic Token v.s Bearer Token

前言

在Auth的过程,很常会看到Basic、Bearer 型态的Token,而是用的场景不太一样。 Basic用在存取一个网站、网域的时候,Bearer则是用于存取Protect Resource的时候。

Token 怎么使用?

一般来说是在HEADER中使用 Authorization 的并带入存取的Token,如Basic、Bearer等type的Token。

Authorization Header Example

# Unauthorized Response
GET / HTTP/1.1

# Authorized Query
GET / HTTP/1.1
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Bash

Basic Token

作为HTTP最基本的认证方式,使用明码的方式进行传输password、user_id。 设计面并未考虑到TLS认证,以明码的方式传送password、user_id。

一般来说,在存取资Server的时候,需要预先带入Token,然而若未能成功验证通过时,Response 则会回应相关的资讯,带有WWW-Authenticate HEADER,并带有Realm (Protection Space)资讯。

Key words:

  1. Realm(Protection Space): Token有效的网域。
  2. charset: 用于设定schema的编码,只能允许utf-8一种

Bearer Token

是以HTTP 1.1 TLS下去定义的Token,因此使用Bearer必须具备TLS环境。 延续使用Basic Token 的WWW-Authenticate、Authorization HEADER,而proxy authentication不延续使用。

使用Token的方式:

使用 Authorization HEADER:

Ex: Authorization: Bearer QWxhZGRpbjpvcGVuIHNlc2FtZQ==

使用 Form Body:

使用时不建议将Token加入Body,并使用 GET之外的HTTP verbs (POST、DELETE、PUT)
HEADER: Content-Type: "application/x-www-form-urlencoded"

直接使用在 URI :

一般来说不会使用这种方法,除非是Authorization header不支援,或者protect resource支援该方法。
Ex: GET /resource?access_token=mF_9.B5f-4.1JqM HTTP/1.1

Token Response Error

使用Token时,当HTTP Response Status code 为200时代表成功,然而当失败的时候则会出现4XX的Status code。

Basic Token: 当授权为「不」通过时,回传401 code并告知哪个Protect Scope 错误。

  • Basic Token Error Example
HTTP/1.1 401 Unauthorized
Date: Mon, 04 Feb 2014 16:50:53 GMT
WWW-Authenticate: Basic realm="WallyWorld"
Bash

Bearer Token: 当授权为「不」通过时,回传400、401、403 code,并根据状况回传对应的错误。

Error Type说明
invalid_requestResponse 400 error code,表示Request 缺少参数或者多了一些参数等错误
invalid_tokenResponse 401 error code,表示Token 错误,通过不了认证
invalid_scopeResponse 403 error code,表示Token无权存取该Protect Resource
  • Bearer Token Error Example
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="example",
                  error="invalid_token",
                  error_description="The access token expired"
Bash

总结

Basic Token 主要还是使用在网域上的防护(Realm),而Bearer则是针对protect resource的存取,主要还是使用在Auth 2.0 上头,且一定要在TLS环境(HTTPS)使用

参考资料

[1] The 'Basic' HTTP Authentication Scheme
[2] The OAuth 2.0 Authorization Framework: Bearer Token Usage
[3] Basic Authentication

打赏
评论区
头像
  • 高兴
  • 小怒
  • 脸红
  • 内伤
  • 装大款
  • 赞一个
  • 害羞
  • 汗
  • 吐血倒地
  • 深思
  • 不高兴
  • 无语
  • 亲亲
  • 口水
  • 尴尬
  • 中指
  • 想一想
  • 哭泣
  • 便便
  • 献花
  • 皱眉
  • 傻笑
  • 狂汗
  • 吐
  • 喷水
  • 看不见
  • 鼓掌
  • 阴暗
  • 长草
  • 献黄瓜
  • 邪恶
  • 期待
  • 得意
  • 吐舌
  • 喷血
  • 无所谓
  • 观察
  • 暗地观察
  • 肿包
  • 中枪
  • 大囧
  • 呲牙
  • 抠鼻
  • 不说话
  • 咽气
  • 欢呼
  • 锁眉
  • 蜡烛
  • 坐等
  • 击掌
  • 惊喜
  • 喜极而泣
  • 抽烟
  • 不出所料
  • 愤怒
  • 无奈
  • 黑线
  • 投降
  • 看热闹
  • 扇耳光
  • 小眼睛
  • 中刀
  • 呵呵
  • 哈哈
  • 吐舌
  • 太开心
  • 笑眼
  • 花心
  • 小乖
  • 乖
  • 捂嘴笑
  • 滑稽
  • 你懂的
  • 不高兴
  • 怒
  • 汗
  • 黑线
  • 泪
  • 真棒
  • 喷
  • 惊哭
  • 阴险
  • 鄙视
  • 酷
  • 啊
  • 狂汗
  • what
  • 疑问
  • 酸爽
  • 呀咩爹
  • 委屈
  • 惊讶
  • 睡觉
  • 笑尿
  • 挖鼻
  • 吐
  • 犀利
  • 小红脸
  • 懒得理
  • 勉强
  • 爱心
  • 心碎
  • 玫瑰
  • 礼物
  • 彩虹
  • 太阳
  • 星星月亮
  • 钱币
  • 茶杯
  • 蛋糕
  • 大拇指
  • 胜利
  • haha
  • OK
  • 沙发
  • 手纸
  • 香蕉
  • 便便
  • 药丸
  • 红领巾
  • 蜡烛
  • 音乐
  • 灯泡
  • 开心
  • 钱
  • 咦
  • 呼
  • 冷
  • 生气
  • 弱
  • 阿鲁
  • 泡泡
    头像
    季悠然
      

    讲得挺清晰的,好评