0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Bearer認証とJWT認証

Last updated at Posted at 2025-01-06

Bearer認証とJWT認証

Bearer認証

Bearer認証は一時的なトークンをヘッダーに設定し、サーバーサイドでそのトークンが有効かどうかを確認することで認証を行う。
トークンはユーザーIDと紐づけられており、サーバーはトークンを基にユーザー情報を都度取得する必要がある。

JWT認証

JWT認証は署名付きトークンを使用し、署名の検証が成功すれば認証OKとなる仕組み。
トークン自体に key: value 形式でデータを含められるため、ユーザー情報を含むことが可能。
Bearer認証とは異なり、トークンとユーザーIDをサーバーで管理する必要がなく、ユーザー情報取得や認証処理にかかるリソースを軽減できる。

JWTペイロードについて

JWTのペイロード部分はただのBase64エンコードされた文字列なのでXMLでもTSVでも好きな形式を指定しようと思えば可能ですが、標準ライブラリでパースできないのでヘッダ解析を自作する必要があります。
基本的にJSON(辞書型)運用を想定しているのでよっぽど事情が無い限りは key: value 形式で問題ないと思います

リクエストサンプル

Bearer認証のリクエスト

HTTPリクエスト例

GET /api/resource HTTP/1.1
Host: example.com
Authorization: Bearer 49368cec-87b5-40f1-9194-03a10d41c659
Content-Type: application/json

CURL例

curl -X GET https://example.com/api/resource \
-H "Authorization: Bearer 49368cec-87b5-40f1-9194-03a10d41c659" \
-H "Content-Type: application/json"

※認証情報はヘッダに設定されるため、GET以外のMETHODでも同様です

JWT認証のリクエスト

ペイロード

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

HTTPリクエスト例

GET /api/resource HTTP/1.1
Host: example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Content-Type: application/json

CURL例

curl -X GET https://example.com/api/resource \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" \
-H "Content-Type: application/json"

※認証情報はヘッダに設定されるため、GET以外のMETHODでも同様です

シーケンス図

Bearer認証

JWT認証

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?