各エンドポイント
OAuth 2.0 / OIDC では、複数のエンドポイントが連携して動作します。 それぞれの役割とパラメータを理解しましょう。
エンドポイントの全体像
# 認可コードフローにおける各エンドポイントの出番
1. [ディスカバリ] プロバイダーの設定情報を取得
2. [認可] ユーザーの認証と同意取得
3. [トークン] 認可コードをトークンに交換
4. [JWKS] IDトークンの署名を検証
5. [ユーザー情報] 追加のプロフィール情報を取得
6. [失効] ログアウト時にトークンを無効化
/authorizeユーザーの認証と認可を行うエンドポイント。ブラウザでアクセスし、ログイン画面と同意画面を表示する。
主要なパラメータ
response_typecode (認可コードフロー)client_idクライアントの識別子redirect_uri認可後のリダイレクト先scope要求する権限の範囲stateCSRF対策のランダム値/token認可コードをトークンに交換するエンドポイント。サーバー間通信で使用し、ブラウザからは直接アクセスしない。
主要なパラメータ
grant_typeauthorization_code / refresh_tokencode認可コード(初回取得時)redirect_uri認可リクエスト時と同じ値client_idクライアントの識別子client_secretクライアントの秘密鍵(機密クライアント)/userinfoアクセストークンを使ってユーザーのプロフィール情報を取得するエンドポイント。IDトークンの補完として使える。
主要なパラメータ
AuthorizationBearer {access_token}(ヘッダーで送信)/.well-known/jwks.jsonトークンの署名を検証するための公開鍵情報 (JSON Web Key Set) を提供するエンドポイント。
主要なパラメータ
(パラメータなし)公開鍵セットをJSON形式で返す/.well-known/openid-configurationOIDCプロバイダーの設定情報を提供するエンドポイント。各エンドポイントのURL、対応するスコープ、署名アルゴリズムなどが含まれる。
主要なパラメータ
(パラメータなし)プロバイダーのメタデータをJSON形式で返す/revoke発行済みのトークンを無効化するエンドポイント。ログアウト時やセキュリティインシデント時に使用する。
主要なパラメータ
token無効化するトークンtoken_type_hintaccess_token / refresh_tokenディスカバリレスポンスの例
ディスカバリエンドポイントのレスポンスには、そのプロバイダーが提供する すべてのエンドポイントのURLが含まれます。クライアントはまずこの情報を取得して、 各エンドポイントのURLを把握します。
// GET /.well-known/openid-configuration
{
"issuer": "https://auth.example.com",
"authorization_endpoint": "https://auth.example.com/authorize",
"token_endpoint": "https://auth.example.com/token",
"userinfo_endpoint": "https://auth.example.com/userinfo",
"jwks_uri": "https://auth.example.com/.well-known/jwks.json",
"revocation_endpoint": "https://auth.example.com/revoke",
"scopes_supported": ["openid", "profile", "email"],
"response_types_supported": ["code"],
"grant_types_supported": ["authorization_code", "refresh_token"]
}