認証 / 認可
Authentication & Authorization
認証 vs 認可
認証(AuthN)
「誰か」を確認する
例: ログイン、パスワード確認
認可(AuthZ)
「何ができるか」を確認する
例: 管理者のみ削除可能
JWT(JSON Web Token)
3つのパートから構成されるトークン形式。Base64エンコード。署名で改ざん検知。
1 [Header].[Payload].[Signature] 2 3 Header: 4 { 5 "alg": "RS256", 6 "typ": "JWT" 7 } 8 9 Payload: 10 { 11 "sub": "user123", 12 "name": "John Doe", 13 "role": "admin", 14 "exp": 1704067200 15 } 16 17 Signature: 18 RSASHA256(base64(header) + "." + base64(payload), secret)
OAuth 2.0
認可のための標準プロトコル。第三者アプリにリソースへのアクセスを許可。
| フロー | ユースケース |
|---|---|
| Authorization Code | Webアプリ(サーバーサイド) |
| Authorization Code + PKCE | SPA、モバイルアプリ |
| 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