機能
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へ連携可能。 | |
| セルフサービス | パスワード変更・リセット | ✅ | 認証済みユーザーが自分のパスワードを変更。忘れた場合はメール認証によるリセットに対応。 |
| 連絡先(Email / 電話番号)の確認・変更 | ✅ | 到達性を確認コードで証明してから確定。変更は専用スコープで保護し、旧値への通知・変更ポリシー(認証条件 / 直近認証)に対応。 | |
| MFAデバイスの登録 | ✅ | FIDO2 / Passkey / FIDO-UAF などの認証デバイスを自分で登録。 | |
| 認証デバイスの更新・削除 | ✅ | 登録済み認証デバイスのメタデータ更新と削除。 | |
| アカウント削除 | ✅ | 認証済みユーザー自身によるアカウント削除。 | |
| プロフィール取得・更新 | ⚠️ | 識別子以外の属性(氏名・生年月日・ロケール等)の取得と更新。 | |
| 管理 | 組織(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: 身元確認結果取得権限