認証 / 認可

Authentication & Authorization

認証 vs 認可

認証(AuthN)

「誰か」を確認する

例: ログイン、パスワード確認

認可(AuthZ)

「何ができるか」を確認する

例: 管理者のみ削除可能

JWT(JSON Web Token)

3つのパートから構成されるトークン形式。Base64エンコード。署名で改ざん検知。

1[Header].[Payload].[Signature]
2
3Header:
4{
5 "alg": "RS256",
6 "typ": "JWT"
7}
8
9Payload:
10{
11 "sub": "user123",
12 "name": "John Doe",
13 "role": "admin",
14 "exp": 1704067200
15}
16
17Signature:
18RSASHA256(base64(header) + "." + base64(payload), secret)

OAuth 2.0

認可のための標準プロトコル。第三者アプリにリソースへのアクセスを許可。

フローユースケース
Authorization CodeWebアプリ(サーバーサイド)
Authorization Code + PKCESPA、モバイルアプリ
Client Credentialsサーバー間通信

OIDC(OpenID Connect)

OAuth 2.0の上に構築された認証プロトコル。 ID Tokenでユーザー情報を取得。

RBAC(Role-Based Access Control)

役割に基づいてアクセス権限を管理。ユーザー → ロール → パーミッション

User

john@example.com

Role

admin, editor, viewer

Permission

read, write, delete