Bearerトークン
Bearerトークンは、セキュリティトークンのうちその利用可否が「トークンの所有」のみで決定されるものである[1]。持参人トークン・署名なしトークンとも呼ばれる。
概要
[編集]セキュリティトークンとはある対象へのアクセス制御(利用可否など)を担うトークン・許可証であり、Bearerトークンはその一形態である。Bearerとは「持参人」すなわち「トークンを持ってきた存在」を意味する。BearerトークンはBearer(それを持ってきた存在)にアクセス権限を与える特性を持つ。
Bearerトークンはしばしば切符に例えられる。切符は乗り物への乗車=アクセスを制御するトークンである。切符の利用権利は単純に「切符を持ってきた人=Bearer」に付与される。誰が切符を購入し管理していたかは関係がない。極端な例では拾った切符であっても(切符の権利者でなくても)持ってきた人=Bearerに乗車権利が付与される。このように切符はBearerトークンと同じ性質を持っている。
Bearerトークンの対比としてproof-of-possessionトークン(PoPトークン、「所有の証明」トークン、記名式トークン)が挙げられる。PoPトークンはトークンの所有に追加してトークン権利を所有することの証明を必要とする[1]。Bearerトークンは切符に例えられるが、PoPトークンは国際線飛行機チケットに例えられる。国際線飛行機はチケットを提示するだけではなく、チケットに記された氏名の確認、すなわち権利所有者であることの証明が必要である(パスポートを利用する)。Bearerトークンは単純にトークンの所有のみが求められる点でPoPトークンと異なる。
Bearerトークンの具体例としてGoogleサインインが挙げられる。GoogleサインインをおこなうとGoogleはユーザーに対してBearerトークンを発行する。Bearerトークンはブラウザに保存されており、Googleのサービス例えばGmailを利用する際、Bearerトークンをリクエストに付与する形で持参することにより、Gmailへのアクセス権を得ている。
Bearerトークンを用いたWeb認証はBearer認証あるいはトークン認証と呼ばれる[2]。OAuth2.0、OpenID ConnectはBearerトークンによる認証/認可をサポートしている。
HTTP認証
[編集]HTTP認証でBearer認証を行う場合、認証スキーム名としてBearerを用いる。この認証スキーム名は、RFC 6750 の 6.1.1. The "Bearer" OAuth Access Token Type("Bearer" OAuth アクセストークンタイプ)により登録されている[3]。
流出と不正アクセス
[編集]Bearerトークンはその所有のみによって権利付与をおこなうため、Bearerトークンは決して外部で流出させてはならない。なぜなら、拾った切符は利用できてしまうのと同様に、流出したBearerトークンによって第三者がアクセス権を得てしまうからである。
参考文献
[編集]脚注
[編集]- ^ a b 署名なしトークン (Bearer Token) セキュリティトークン. トークンを所有する任意のパーティ (持参人 = bearer) は, 「トークンを所有している」という条件を満たしさえすればそのトークンを利用することができる. 署名無しトークンを利用する際, 持参人は, 暗号鍵の所持を証明 (proof-of-posession) するよう要求されない. The OAuth 2.0 Authorization Framework: Bearer Token Usage(日本語)
- ^ Bearer authentication (also called token authentication) is an HTTP authentication scheme that involves security tokens called bearer tokens. The name “Bearer authentication” can be understood as “give access to the bearer of this token.” Swagger - Specification - Authentication
- ^ “The OAuth 2.0 Authorization Framework: Bearer Token Usage(日本語)”. OpenID Foundation Japan. 2020年1月3日閲覧。