機能
idp-server は、下記機能をサポートしています(一部予定)。
機能一覧
- ✅ - 対応済み
- ⚠️ - 実装中
| カテゴリ | サブカテゴリ | 対応状況 | 説明 |
|---|---|---|---|
| Trusted Web | 身元確認 / eKYCプロバイダーとの連携 | ✅ | テナントごとのポリシーに応じて身元確認 / eKYCフローを動的に統合する。 |
| VC申請・発行ワークフロー | ⚠️ | ユーザーの申請・審査から発行までのVerified Credentials(VC)管理ワークフローを提供。 | |
| 認証 | パスワード認証 | ✅ | ユーザー名とパスワードによる認証。 |
| 多要素認証(MFA) | ✅ | SMS、メール、プッシュ通知などによる多要素認証を追加。 | |
| WebAuthn(Passkey, FIDO2) | ✅ | FIDO2 または Passkey によるパスワードレス認証をサポート。 | |
| FIDO-UAF | ✅ | FIDO-UAF による認証をサポート。 | |
| ソーシャルログイン | ✅ | Google や Facebook などの外部アカウントによる認証をサポート。 | |
| IdP連携(フェデレーション) | ✅ | OIDC による外部IdPとのフェデレーション認証をサポート。 | |
| エンタープライズフェデレーション(予定) | 🔜 | SAML、LDAP対応を計画中。 | |
| MFAルールのカスタマイズ | ✅ | テナントやユーザー単位で柔軟にMFAルールを定義可能。 | |
| 認可 | ロールベースアクセス制御(RBAC) | ✅ | ユーザーにロールと権限を割り当てて、アクセスを制御。 |
| パーミッション管理 | ✅ | ユーザーごとの詳細なアクセス権限を管理。 | |
| API 認可 | ✅ | OAuth 2.0 に準拠したアクセストークンを用いたAPIを保護。 | |
| M2M(マシン間)認証 | ✅ | クライアントクレデンシャルによるサービス間認証をサポート。 | |
| セッション管理 | ✅ | トークンの有効期限、リフレッシュ、ログアウト対応。 | |
| 認可プロバイダーの選択 | ✅ | カスタム認可プロバイダーを選択して利用可能。 | |
| セキュリティ | セキュリティイベント(ユーザー操作)ログ | ✅ | ログイン・認証失敗などのユーザー操作履歴を時系列で参照可能。 |
| セキュリティイベントフック対応 | ✅ | テナント設定に応じて、各種セキュリティイベントごとに複数のHookを順次実行可能。 | |
| ユーザー同意とプライバシー対応 | ✅ | FAPIに基づいたgrant管理により、GDPRやCCPA等の規制に準拠。 | |
| セキュアなトークン管理 | ✅ | アクセストークンの安全な管理と漏洩防止に対応。 | |
| 金融グレードAPI(FAPI)準拠 | ✅ | 金融機関向けの高セキュリティ要件に準拠。 | |
| SSF(Shared Signal Framework) | ✅ | セキュリティイベントをRelying Partyへ連携可能。 | |
| 管理 | 組織(Organization)機能 | ⚠️ | 複数テナントやメンバー、SSO、課金を一括管理できる組織機能。 |
| 組織メンバー管理 | ✅ | メンバー招待。権限管理を提供。 | |
| 組織向けSSO強制 | ⚠️ | 組織に所属するユーザーに対してSSOを強制。 | |
| サブスクリプション・課金 | ⚠️ | 課金・プラン管理機能を提供。 | |
| テナント管理 | ✅ | 複数テナントを一元管理可能。 | |
| 認可サーバー管理 | ✅ | 認可サーバーの編集。 | |
| アプリケーション管理 | ✅ | アプリケーションの作成・編集・削除。 | |
| ユーザー管理 | ✅ | ユーザーの作成・編集・削除。 | |
| 認証設定の管理 | ✅ | 認証方式・設定の作成・編集・削除。 | |
| 身元確認の設定 | ✅ | 身元確認設定の作成・編集・削除。 | |
| ロールの設定 | ✅ | ロールの作成・編集・削除。ユーザーへの割当。 | |
| パーミッションの設定 | ✅ | パーミッションの作成・編集・削除。ロール・ユーザーへの割当。 | |
| トークン管理 | ⚠️ | ユーザー / デバッグ用のトークン発行・削除。 | |
| トランザクションデータのクリーンアップ | ✅ | 認証リクエストやMFA挑戦などの期限切れ・未使用データを定期的に自動削除。 | |
| モニタリング | 監査ログ | ✅ | 認証イベントの記録とセキュリティアクティビティの追跡。 |
| モニタリングログ連携 | ✅ | ログ収集サービス(例:Datadog)との統合。 | |
| セキュリティアラート通知 | ⚠️ | 異常なログインや侵害検知を管理者へ通知。 | |
| SIEM連携 | ⚠️ | セキュリティ監視ツール(SIEM)との統合に対応。 | |
| 開発者向けツール | SDK・ライブラリ提供 | ⚠️ | React Android iOS などのSDKを提供予定。 |
| カスタムHookなどプラグイン実装 | ✅ | 独自のビジネスロジックを実装可能。 | |
| ログイン画面のカスタマイズ | ⚠️ | テナントごとにロゴ・配色・文言などを変更可能な認証画面テンプレートを提供。独自のブランド体験を実現。 | |
| インフラ | 複数データベースのサポート | ✅ | テナントごとにデータベース種別(PostgreSQL, MySQL)を切り替え可能。 |
| ダッシュボード | オンボーディング | ⚠️ | 初期セットアップやテナント作成、認証方式選択、初期ユーザー登録などを案内する導入支援UI機能。 |
| 統計情報 | ⚠️ | ログイン数、認証失敗数、アクティブユーザー数などの利用状況をリアルタイムで可視化。 | |
| 組織管理 | ⚠️ | 複数テナントを束ねた「組織」単位での情報閲覧、SSOポリシー、課金管理などを一元管理可能。 | |
| 組織メンバー管理 | ⚠️ | 組織メンバーの招待・削除、ロール・パーミッションの付与をGUIで管理可能。 | |
| 組織向けSSO強制 | ⚠️ | 組織に所属するユーザーに対して、指定したSSOプロバイダー経由でのログインを強制。 | |
| テナント管理 | ⚠️ | テナントの作成・無効化・認証設定・データベース設定などをGUIで一元管理可能。 | |
| 認可サーバー管理 | ⚠️ | 認可サーバーの設定をGUIで一元 管理可能。OAuth /OIDC /CIBA /FAPI etc。 | |
| アプリケーション管理 | ⚠️ | OAuth/OIDCクライアントの登録・設定・削除を視覚的に操作可能。 | |
| ユーザー管理 | ⚠️ | ユーザーの一覧表示、検索、作成・編集・削除、ロール割り当てなどをGUIで実行。 | |
| 認証設定の管理 | ⚠️ | パスワードポリシー、MFA有効化、認証手段の選択などをGUI上で設定可能。 | |
| 身元確認の設定 | ⚠️ | 身元確認フロー、eKYCプロバイダー、審査条件、遷移ルールなどの設定をGUIから操作可能。 | |
| ロールの設定 | ⚠️ | 新しいロールの作成、編集、削除、ユーザーへの割当をGUIにて管理可能。 | |
| トークン管理 | ⚠️ | ユーザー / デバッグ用のトークン発行・削除。 | |
| パーミッションの設定 | ⚠️ | パーミッション項目ごとにアクセス範囲を定義し、ロールまたはユーザーに割当をGUIから操作可能。 | |
| セキュリティイベント(ユーザー操作)ログ | ⚠️ | ログイン・認証失敗などのユーザー操作履歴を時系列で、GUIから確認可能。 | |
| 監査ログ | ⚠️ | システム設定変更などの監査情報をGUIで確認可能。 | |
| セキュリティイベントフック | ⚠️ | 各種セキュリティイベントのHookの実行結果の参照、再実行をGUIから可能。 | |
| サブスクリプション・課金 | ⚠️ | 課金・プラン管理機能をGUIから可能。 | |
| モニタリング | ⚠️ | アプリケーションログをGUIから参照可能。 |
対応プロトコル
-
OAuth 2.0 (RFC 6749)
- 認可コード Grant
- インプリシット Grant
- クライアントクレデンシャルズ Grant
- リソースオーナーパスワードクレデンシャルズ Grant
-
OpenID Connect (OIDC)
- 認可コードフロー
- インプリシットフロー
- ハイブリットフロー
- リクエストオブジェクト(署名付き/暗号化/平文)
- UserInfo エンドポイント
-
Financial-grade API (FAPI)
- Part 1: Baseline
- Part 2: Advanced(JARM, PAR)
-
クライアント主導型バックチャネル認証(CIBA)
- Poll / Ping / Push モード
- リクエストオブジェクト対応
- デバイス通知(例:FCM / APNs)
-
トークン管理
- JWT アクセストークン
- IDトークンのカスタマイズ
- トークン失効 / インスペクション(RFC 7009 / RFC 7662)
特徴と強み
idp-server は、企業やサービスプロバイダーが セキュアかつ柔軟に認証・ 認可・身元確認 を統合管理できるオープンソースの Identity Provider(IdP)です。以下の特徴により、金融・行政・エンタープライズ用途にも対応可能な設計となっています。
✅ 柔軟なテンプレートベース設計
- 各種申込み処理(身元確認、VC発行など)や認証フロー、Hook実行処理などがテンプレート形式で定義可能。
- 新しいユースケースにも設定変更のみで即時対応。
✅ マルチテナント設計
- 1インスタンスで複数のテナント(顧客)を同時に管理可能。
- RLSを利用し、テナントごとにデータ領域を分離する。
✅ 高度な認証手段とセキュリティ基準対応
- FIDO2 / Passkey / CIBA などのパスワードレス・分離認証にも対応。
- FAPI Baseline / Advanced による金融機関レベルのセキュリティ準拠。
- SSF(Shared Signal Framework ) により、セキュリティイベントの即時通知・連携が可能。
✅ モダンな拡張性と統合力
- フック・プラグインによるカスタムロジック実装に対応(Javaベース)。
- 認証・認可だけでなく、VCの発行ワークフローや 外部API連携(Webhook / OAuth連携) も組み込める。
- ログは Datadog などと統合し、監査・可視化も万全。
カスタマイズポイント
idp-server は、機能ごとに柔軟なカスタマイズポイントを提供しています。以下は、実プロジェクトでの実装例を基に整理したカスタマイズのポイントです。
1. 認証機能のカスタマイズ
🔐 認証方式の実装
idp-serverでは、標準的な認証方式に加えて、独自の認証方式を実装できます。
カスタマイズポイント:
- 外部認証APIとの統合: 既存の認証基盤とHTTP連携し、独自の認証方式を実装
- 認証フローの定義: チャレンジ・レスポンス方式、OTP方式など、相互作用(interactions)を自由に設計
- 複数APIの組み合わせ: 1つの認証方式で複数の外部APIを順次呼び出し可能
- 認証テンプレート: メール本文、SMS本文などのテンプレートをカスタマイズ
実装例:
- FIDO-UAF認証: 外部APIと統合し、生体認証を実装(registration-challenge → registration → authentication-challenge → authentication → deregistration)
📋 認証ポリシーの定義
認証ポリシーを通じて、どの認証方式をどのタイミングで使用するかを制御できます。
カスタマイズポイント:
- フロー別ポリシー: OAuth、CIBA、FIDO登録、FIDO再登録、PIN登録など、フロー別に異なるポリシーを定義
- 利用可能な認証方式: ポリシーごとに利用可能な認証方式(available_methods)を指定
- ACRマッピング: 認証レベル(ACR: Authentication Context Class Reference)と認証方式のマッピングルール
- 成功・失敗・ロック条件: 認証試行回数、有効期限、デバイス数上限などの条件設定
- 本人確認要件: 再登録時など、特定 のフローで本人確認を必須化(required_identity_verifications)
実装例:
- CIBA認証ポリシー: 生体認証のみを許可、特定クライアント向けに限定
- デバイス登録ポリシー: デバイス数上限を設定、成功・失敗条件を定義
- デバイス再登録ポリシー: 本人確認を必須化、セキュリティを強化
- OAuth認証ポリシー: SMS・Email認証を組み合わせ、ロック条件(N回失敗でロック)を設定
2. 認可機能のカスタマイズ
🔑 CIBA(Client Initiated Backchannel Authentication)
クライアント主導型バックチャネル認証では、クライアント別に異なる動作を設定できます。
カスタマイズポイント:
- CIBA動作モード: クライアントごとに動作モードを選択
authentication-device-notification-no-action: プッシュ通知なし(消費デバイスと認証デバイスが同一の場合)authentication-device-notification: プッシュ通知+ユーザアクション必要poll,ping,push: 標 準的なCIBAモード
- プッシュ通知の実装: FCM(Android)、APNS(iOS)の設定
- 通知テンプレート: プッシュ通知のタイトル・本文をカスタマイズ
実装例:
- モバイルアプリ:
authentication-device-notification-no-action- シームレスな認証体験を提供 - Webアプリケーション:
authentication-device-notification- セキュリティ重視、明示的な承認を要求 - API連携:
authentication-device-notification- API連携時の明示的な同意取得
🎯 カスタムスコープとクレーム
業務固有の拡張スコープ・クレームを定義できます。
カスタマイズポイント:
- カスタムスコープ: 業務固有のスコープを定義(例:
identity_verification_application,claims:external_id) - カスタムクレーム: IDトークンやUserInfoレスポンスに独自のクレームを追加
- クレームマッピング: 外部APIのレスポンスをクレームにマッピング(user_mapping_rules)
- スコープの権限制御: 各スコープで実行可能な操作を制限
実装例:
claims:external_id: 外部システムのユーザIDとのマッピングclaims:authentication_devices: 認証デバイス情報(登録状況、デ バイス種別等)claims:verification_status: 本人確認ステータスclaims:authentication_method: 利用した認証方式情報identity_verification_application: 身元確認申請権限identity_verification_result: 身元確認結果取得権限
3. 身元確認フローのカスタマイズ
📝 プロセスの定義
身元確認フローは、複数のプロセス(processes)を組み合わせて柔軟に設計できます。
カスタマイズポイント:
- プロセスの追加・削除: 必要なプロセスのみを定義
- 外部APIとの連携: 各プロセスで外部APIを呼び出し(pre_hook, execution)
- HTTPリクエストのカスタマイズ: URL、メソッド、ヘッダー、ボディを自由に設定
- マッピングルール: リクエストボディ(body_mapping_rules)、レスポンス(response_mapping_rules)のマッピング
- OAuth 2.0認証: 外部API呼び出し時にOAuth 2.0トークンを自動取得(oauth_authorization)
- プロセスの順序制御: フロントエンドから任意の順序でプロセスを呼び出し可能
実装例:
- アカウント開設フロー(7プロセス): 申請開始 → 基本情報入力 → eKYC発行 → eKYC完了 → 審査コールバック → 結果コールバック → キャンセル
✅ verified_claims(身元確認済みクレーム)
eKYC完了後、検証された情報を verified_claims として発行できます。
カスタマイズポイント:
- verified_claims_mapping_rules: 外部APIのレスポンスを
verified_claimsにマッピング - verification系: 審査・検証情報(trust_framework, evidence等)
- claims系: ユーザー属性情報(氏名、住所、生年月日等)
- 信頼フレームワーク: 国・地域に応じた信頼フレームワークを設定(例:
jp_aml,eu_eidas,us_nist) - 証拠情報: 本人確認書類の種類、有効期限、写真等の証拠情報を記録
実装例:
- verification系:
trust_framework: jp_aml,evidence: electronic_record, visualなど、審査基準と証拠情報を記録 - claims系:
first_name,last_name,address,birthdateなど、eKYCで取得した個人情報をマッピング
4. セキュリティフックのカスタマイズ
🔔 セキュリティイベントフック
特定のセキュリティイベント発生時に外部システムへ通知を送信できます。
カスタマイズポイント:
- イベント種別: ログイン成功、ログイン失敗、本人確認申請承認、PIN登録成功など、監視したいイベントを指定
- 通知先の選択: Email、SSF、Webhook、SIEM等、複数の通知先を設定可能
- 通知内容のカスタマイズ: メール本文、SSFトークンのペイロードをカスタマイズ
- 複数フックの順次実行: 同一イベントに対して複数のフックを順次実行
- フックの実行条件: 特定の条件(ユーザー属性、IPアドレス等)でフックを実行
実装例:
- Email通知: 本人確認申請承認、PIN登録成功等のイベント発生時にメール送信
- SSF通知: セキュリティイベント発生時にSSFトークンを生成して外部システムに送信
5. 外部サービス連携のカスタマイズ
🌐 連携パターン
idp-serverでは、3つの連携パターンで外部サービスと統合できます。
カスタマイズポイント:
パターン1: 同期API連携(HTTP呼び出し)
外部APIを同期的に呼び出し、レスポンスを待って処理を続行します。
- HTTP リクエスト: GET, POST, PUT, DELETE等のHTTPメソッドをサポート
- 認証方式: Basic認証、API Key、OAuth 2.0 Client Credentials等、様々な認証方式に対応
- OAuth 2.0自動認証: 外部API呼び出し前に自動的にトークンを取得(トークンキャッシュ対応)
- タイムアウト設定: APIごとにタイムアウトを設定可能
- リトライ制御: エラー時のリトライ回数・間隔を設定
ユースケース:
- 認証時にユーザー情報を外部システムから取得
- eKYC完了時に外部のCRMシステムへ顧客情報を登録
- 本人確認フロー内で複数の外部APIを順次呼び出し
パターン2: イベント駆動連携(フック)
特定のイベント発生時に外部システムへ通知を送信します。
- セキュリティイベントフック: イベント発生時に外部APIを呼び出し
- SSF(Shared Signals Framework): 標準化されたセキュリティイベント送信
- カスタムイベント: 独自のイベントを定義して通知
- 複数フックの順次実行: 同一イベントに対して複数のフックを実行
ユースケース:
- ログイン成功時にSIEMシステムへ通知
- 本人確認申請承認時にメール送信
- 認証失敗時にセキュリティアラート送信
パターン3: プッシュ通知
モバイルデバイスへのプッシュ通知を送信します。
- FCM(Firebase Cloud Messaging): Android向けプッシュ通知
- APNS(Apple Push Notification Service): iOS向けプッシュ通知
- 通知テンプレート: タイトル・本文をカスタマイズ
- デバイス登録管理: プッシュ通知用のデバイストークンを管理
ユースケース:
- CIBA認証時のプッシュ通知
- 本人確認完了通知
- セ キュリティアラート通知
実装例:
- フロー管理サービス: OAuth 2.0で認証し、本人確認フロー全体を管理(9-12プロセス)
- 認証基盤: HTTP Basic認証で、FIDO UAF、PIN、SMS認証APIを呼び出し
- 顔認証サービス: API Keyで認証し、顔認証サービスと連携
- 既存システムAPI: OAuth 2.0で認証し、アカウント情報、メール、電話番号、認証情報を取得
- イベントハブ: OAuth 2.0で認証し、SSFトークンによるセキュリティイベント送信
6. クライアントアプリケーションのカスタマイズ
🔑 クライアント設定
クライアントごとに細かく設定をカスタマイズできます。
カスタマイズポイント:
- Grant Types: クライアントごとに許可するGrant Type(authorization_code, refresh_token, password, client_credentials, ciba)を選択
- スコープ: クライアントごとに利用可能なスコープを制限
- トークン有効期限: アクセストークン、リフレッシュトークンの有 効期限をクライアントごとに設定
- リダイレクトURI: 複数のリダイレクトURIを設定可能
- Token Endpoint認証方式:
none,client_secret_basic,client_secret_post,private_key_jwtなど - CIBA設定: クライアントごとにCIBA動作モードを選択
- 利用可能フェデレーション: クライアントごとに利用可能なIdPフェデレーションを制限
実装例:
- モバイルアプリ: 全5種類のGrant Typeをサポート、CIBA動作は
no-actionでシームレスな体験 - Webアプリケーション(内部用): 全5種類のGrant Typeをサポート、CIBA動作は
action必要でセキュリティ重視 - Webアプリケーション(API連携用): 全5種類のGrant Typeをサポート、CIBA動作は
action必要で明示的な同意取得 - Webアプリケーション(既存システム連携): Authorization Code + Refresh Token、既存IdPフェデレーション利用
- Webアプリケーション(新規アカウント用): 4種類のGrant Type、SMS/Email OTP認証を使用
7. テナント設定のカスタマイズ
🏢 テナント別設定
マルチテナント機能により、テナントごとに独立した設定が可能です。
カスタマイズポイント:
- 発行者(issuer): テナントごとに異なる発行者URLを設定
- エンドポイント: 認可、トークン、UserInfo、JWKS等のエンドポイントをカスタマイズ
- サポートするGrant Types: テナントごとにサポートするGrant Typeを選択
- サポートするスコープ: テナントごとに利用可能なスコープを定義
- ACR値: テナントごとに異なる認証レベル(ACR)を定義
- 認証ポリシー: テナントごとに複数の認証ポリシーを定義
- JWKs: テナントごとに異なる署名鍵を使用
- CIBAエンドポイント: CIBAをサポートするかどうかをテナント別に設定
実装例:
- 既存ユーザー向けテナント: CIBA対応、複数の認証ポリシー(CIBA、FIDO登録・再登録、PIN登録、OAuth)、多数のクライアント設定
- 新規ユーザー向けテナント: CIBA非対応、シンプルな認証ポリシー(OAuth、SMS/Email OTP)、限定的なクライアント設定
まとめ
idp-server のカスタマイズポイントは、以下の7つの領域に整理できます:
- 認証機能: 外部APIとの統合、認証フローの定義、認証ポリシーの柔軟な設定
- 認可機能: CIBA動作モードのクライアント 別設定、カスタムスコープ・クレームの定義
- 身元確認フロー: 複数プロセスの組み合わせ、外部APIとの連携、verified_claimsの発行
- セキュリティフック: イベント駆動の通知、Email/SSF等の複数通知先対応
- 外部サービス連携: 3つの連携パターン(同期API連携、イベント駆動連携、プッシュ通知)
- クライアントアプリケーション: Grant Type、スコープ、トークン有効期限、CIBA設定等の細かいカスタマイズ
- テナント設定: マルチテナントによる独立した設定管理
これらのカスタマイズポイントを活用することで、金融機関、エンタープライズ、行政など、様々な業種・業態に対応した認証・認可基盤を構築できます。