OAuth 2.0とOpenID Connect
🔥 Vibe プロンプト
「PKCEとOIDCを使用したOAuth 2.0 Authorization Codeフローを実装。」
OAuth 2.0フロー
Authorization Code (PKCE): [Web/モバイル推奨]
ユーザー → アプリ → 認証サーバー → ログインページ → コード → トークン
Client Credentials: [M2M]
アプリ → 認証サーバー → アクセストークン
Implicit (非推奨): [使用禁止 - セキュリティ問題]
Authorization Code + PKCE
import requests, hashlib, base64, secrets
code_verifier = secrets.token_urlsafe(64)
code_challenge = base64.urlsafe_b64encode(
hashlib.sha256(code_verifier.encode()).digest()
).decode()
auth_url = f"https://auth.example.com/authorize?response_type=code&client_id={CLIENT_ID}&code_challenge={code_challenge}"
token_resp = requests.post("https://auth.example.com/token", data={
"grant_type": "authorization_code",
"code": authorization_code,
"code_verifier": code_verifier
})
access_token = token_resp.json()["access_token"]
スコープ
scope: "openid profile email orders:read"
- openid: OIDC必須
- profile: 名前、画像
- email: メールアドレス
ベストプラクティス
- 常にPKCEを使用
- Implicitフローは使用禁止
- トークンを安全に保存(httpOnly cookie)
- id_tokenの署名とクレームを検証
- 短命アクセストークン(15-60分)
重要なポイント
- コアコンセプトをしっかり理解する
- ハンズオンコード例で実践する
- 実世界の問題に応用する
- 演習で知識を強化する
さらに学ぶ
- 公式ドキュメント
- GitHubのオープンソースプロジェクト
- コミュニティフォーラムとディスカッション
- 関連コースとチュートリアル