10
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

この記事は ウェブクルー 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/

参照

10
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?