外部パスワード認証委譲
既 存の認証基盤(社内認証API等)をそのまま使い、idp-server を OIDC レイヤーとして被せます。
パスワード検証を外部サービスに委譲するため、ユーザーデータベースを移行する必要がありません。
概要図
ユーザーが見る画面
┌───────────────────────────┐ ┌───────────────────────────┐ ┌───────────────────────────┐
│ あなたのアプリ │ │ ログイン画面 │ │ あなたのアプリ │
│ │ │ │ │ │
│ ┌─────────────┐ │ │ メー ルアドレス: [______] │ │ ようこそ、○○さん │
│ │ [ログイン] │ ────────────→ │ パスワード: [______] │ │ (ログイン完了) │
│ └─────────────┘ │ │ │ │ │
│ │ │ ┌─────────────┐ │ └───────────────────────────┘
└───────────────────────────┘ │ │ [ログイン] │ ──────────────→ ↑
│ └─────────────┘ │ │
└───────────────────────────┘ │
OIDCトークン発行
バックエンドの処理フロー
ログイン画面 idp-server 外部認証サービス
│ │ (社内認証API等)
│ POST /password- │ │
│ authentication │ │
│ {username, password} │ │
│ ──────────────────────────→│ │
│ │ POST /auth/password │
│ │ {username, password} │
│ │ ────────────────────────────→│
│ │ │
│ │ 200: {user_id, email, name} │
│ │ 401: {error} │
│ │ ←────────────────────────────│
│ │ │
│ │ レスポンスをユーザー属性に │
│ │ マッピング │
│ │ │
│ 認証結果 │ │
│ ←──────────────────────────│ │
│ │ │
できること
外部認証サービスへの委譲
既存の認証基盤をそのまま活用できます。idp-server はパスワードを検証せず、外部サービスに転送します。
- HTTP API 委譲: 外部サービスの認証APIにユーザー名/パスワードを転送
- レスポンスマッピング: 外部サービスのレスポンスから idp-server のユー ザー属性に自動変換
- プロバイダー識別: 外部サービスごとにプロバイダーIDを付与して識別
- 複数API チェーン: 認証API → ユーザー詳細APIなど、複数の外部APIを順番に呼び出し、結果を統合
OIDCレイヤーの提供
外部認証基盤に標準プロトコルを追加できます。
- Authorization Code Flow: 外部認証を OIDC 準拠のフローでラップ
- IDトークン発行: 認証結果を標準的な JWT として発行
- UserInfo エンドポイント: マッピングされたユーザー情報を OIDC 標準で提供
セキュリティ機能
idp-server 側でのセキュリティ制御を追加できます。
- アカウントロック: 認証失敗回数に基づくロック(外部サービスとは独立)
- セッション管理: ログイン状態の有効期限、SSO
- トークン制御: アクセストークン、リフレッシュトークンの有効期限管理