この記事は ウェブクルー Advent Calendar 2022 23日目の記事です。
昨日は@yusuke-kobayashi0117さんの「【Flutter/Riverpod】画面遷移時の引数をProviderScopeのoverrideで設定する」でした。
はじめに
ここら辺について知見があまりなく、お仕事でBearerって何者?ってなったのでメモ程度ですが調べてみました。
Bearer認証って?
トークンを利用する認証・許可に使用され、RFC 6750に規定されています。
Bearerトークンを用いたweb認証で、ユーザー認証を行った後に発行されるアクセストークンを受け取って、APIリクエスト時に発信する方式です。
またBearerは持参人という意味で、そのトークンを持っているという条件を満たしていればトークンを利用できます。
トークンについて
また、今回2つのトークンが出てきたので調べてみました。
-
アクセストークン
OAuth 2.0 で定義されている、リソースへのアクセスを認可するためのトークン。
文字通りwebAPIなどにアクセスするためのトークン。 -
IDトークン
OpenID Connect で定義されている、ユーザーが認証されたことを証明するトークン。
エンコード方式が定義されており、JWT(JSON Web Token)を利用する必要がある。
ちなみに認証と認可の違いは
認証 :相手が何者かを確認すること
認可:あるリソースへの権限を与えること
使い方
以下の方法でアクセストークンを送信できるらしいです。
- Authorizationヘッダーに埋め込む
- リクエストボディに埋め込む
- クエリーパラメーターとして渡す
主にAuthorizationヘッダーに埋め込んで使用します。
リクエストを投げるときはAuthorizationヘッダで以下のような形で渡してあげます。
Authorization: <type> <token>
typeの部分には認証スキームを入れます。今回の場合はBearerと入れます。
また、tokenの中はアクセストークンをtoken68形式でセットして送ってあげます。
レスポンスはWWW-Authenticateヘッダで以下のような形で帰ってきます。
成功の場合WWW-Authenticate: Bearer realm=xxx
エラーの場合WWW-Authenticate: Bearer error=xxx
エラーの例
-
リクエストパラメータが不正な場合
WWW-Authenticate: Bearer error="invalid_request"
-
提供されたアクセストークンが期限切れ、不正な値である場合
WWW-Authenticate: Bearer error="invalid_token"
-
スコープが不十分である場合
WWW-Authenticate: Bearer error="insufficient_scope"
また、error_description パラメータにエラー内容を説明する文字列を含んだり
error_urlパラメータにエラー内容の説明が入ったページのurlを含めたりもできるそうです。
おわりに
明日はクリスマスイブですね*・゜⛄️🎄
担当は@hiro19840624さんになります。
よろしくお願いいたします!
ウェブクルーでは一緒に働いてくれる方を絶賛募集中です!
興味のある方はぜひお問い合わせください。
https://www.webcrew.co.jp/recruit/
参照