メインコンテンツまでスキップ

検証済み機能マトリクス

idp-server が提供する機能を、10 個のユースケーステンプレートで実際にセットアップ・動作確認した結果に基づいて整理しています。

各テンプレートは config/templates/use-cases/ に配置されており、setup.shverify.sh で動作確認できます。

テンプレート一覧

略称テンプレート想定シナリオ
PWlogin-password-only最小構成のパスワードログイン
Sociallogin-socialGoogle 等ソーシャルログイン
MFA-Emfa-emailパスワード + Email OTP
MFA-Smfa-smsパスワード + SMS OTP(外部API連携)
FIDO2passwordless-fido2WebAuthn/Passkey によるパスワードレス
ExtPWexternal-password-authパスワード認証を外部APIに委譲
eKYCekyc身元確認(本人確認)フロー
3rdthird-partyWeb/Mobile/M2M マルチクライアント
FAPIfinancial-gradeFAPI Advanced + mTLS + CIBA
CIBAcibaFIDO-UAF + CIBA バックチャネル認証

1. 認証

機能説明PWSocialMFA-EMFA-SFIDO2ExtPWeKYC3rdFAPICIBA
パスワード認証ユーザー名+パスワードによるログインoooooooo
外部パスワード認証パスワード検証を外部HTTPサービスに委譲o
Email OTPメールでワンタイムパスワードを送信・検証oo
SMS OTPSMSでワンタイムパスワードを送信・検証(外部API)oo
FIDO2 / WebAuthnPasskey・生体認証によるパスワードレス認証oo
FIDO-UAFFIDO-UAF プロトコルによるデバイス認証o
ソーシャルログインGoogle 等 外部OIDC IdPによるフェデレーションo
ユーザー自己登録認可フロー内でのユーザーセルフサインアップoooooooo

認証ポリシー

全テンプレートで 認証ポリシー により認証フローを制御しています。テンプレートで検証済みのポリシーパターン:

パターン説明検証テンプレート
パスワードのみ単一要素認証PW, Social, eKYC, 3rd, ExtPW
MFA(AND条件)パスワード + OTP の両方が必要MFA-E, MFA-S
MFA(OR条件)パスワード or OTP のどちらかで成功MFA-E(VERIFY-CONFIG-CHANGES パターン6-3)
条件付きMFA特定スコープ要求時のみMFAを強制MFA-E(パターン6-2: transfers スコープ)
段階的認証ステップ順序の変更(Email→PW / PW→Email)MFA-E(パターン6-1)
FIDO2 or パスワードパスワードレス移行期間の併用FIDO2
多段階ポリシーセキュリティレベル別に3段階のポリシーFAPI
CIBA専用ポリシーバックチャネル認証用の独立ポリシーCIBA, FAPI

パスワードポリシー

全テンプレート共通のベースライン:

設定項目
最小文字数8
最大文字数72
失敗回数上限5回
ロックアウト時間15分 (900秒)

2. 認可

機能説明PWSocialMFA-EMFA-SFIDO2ExtPWeKYC3rdFAPICIBA
Authorization Code認可コードフローooooooooo
Refresh Tokenリフレッシュトークンによる更新ooooooooo
Client CredentialsM2Mサービス間認証o
CIBA (Poll)バックチャネル認証(ポーリング)oo
CIBA (Ping)バックチャネル認証(Ping通知)o
JWT Bearer Grantデバイスシークレットによるトークン取得o
SSOセッション共有による自動ログインooooooooo

3. トークン・クレーム

機能説明PWSocialMFA-EMFA-SFIDO2ExtPWeKYC3rdFAPICIBA
ID Tokenユーザー認証情報を含むJWT発行oooooooooo
UserInfoアクセストークンでユーザー属性取得oooooooooo
カスタムスコープ業務固有スコープの定義oooo
カスタムクレームclaims:* スコープによるクレーム拡張o
verified_claims身元確認済み属性の発行o
Refresh Token Rotationリフレッシュトークンの自動ローテーションo
Opaque Access Token不透明アクセストークン(JWT以外)o
Token Introspectionアクセストークンの有効性検証oo

トークン有効期限の設定例

テンプレートAccess TokenID TokenRefresh Token
ベースライン(PW等)デフォルトデフォルトデフォルト
3rd1800秒(30分)3600秒(1時間)604800秒(7日)
FAPI300秒(5分)300秒(5分)2592000秒(30日)

4. クライアント認証

認証方式説明検証テンプレート
client_secret_postボディでシークレット送信PW, Social, MFA-E, MFA-S, FIDO2, eKYC, CIBA
client_secret_basicBasic認証ヘッダー3rd(Web/M2M)
none(Public Client + PKCE)シークレットなし、PKCE必須3rd(Mobile)
private_key_jwtJWT署名によるクライアント認証FAPI
tls_client_authmTLS証明書によるクライアント認証FAPI
self_signed_tls_client_auth自己署名mTLS証明書FAPI

5. セキュリティ

機能説明検証テンプレート
FAPI AdvancedmTLS + 署名リクエスト + PAR + JARMFAPI
PAR(Pushed Authorization Request)認可リクエストの事前登録(60秒有効)FAPI
JARM認可レスポンスのJWT署名FAPI
mTLS Certificate-Bound Token証明書バインドアクセストークンFAPI
署名リクエストオブジェクト必須require_signed_request_object: trueFAPI
Issuerレスポンスパラメータauthorization_response_iss_parameter_supportedFAPI
ブルートフォース防止(パスワード)N回失敗でアカウントロック全テンプレート
ブルートフォース防止(OTP)リトライ回数制限 + 有効期限MFA-E, MFA-S
ワイルドカードマッピング禁止外部APIレスポンスの明示的フィールドマッピングMFA-E, MFA-S

6. 外部サービス連携

連携パターン説明検証テンプレート
認証API委譲パスワード認証を外部HTTPサービスに委譲ExtPW
SMS送信APIOTP送信・検証を外部APIに委譲MFA-S
Email送信APIOTP送信・検証を外部APIに委譲(http_request切替)MFA-E(パターン5)
OAuth認証付き外部APIauth_type: "oauth2" + oauth_authorizationMFA-E(パターン5-3), MFA-S
eKYCサービス連携身元確認プロセスの外部API委譲eKYC
フェデレーション(OIDC)Google等 外部IdPとの認証連携Social
http_request_storeチャレンジ→検証間のデータ引き継ぎMFA-S, MFA-E(パターン5-2)

外部連携で検証済みの設定パターン

パターン内容落とし穴
auth_type: "oauth2" 必須oauth_authorization と同じオブジェクトに必須無いとOAuth認証が実行されない
内部/外部でマッピングパスが異なる内部: $ 直接、外部: $.execution_http_request.response_bodyパスを間違えるとマッピングが空になる
$.interaction vs $.previous_interaction送信ボディでは $.interaction.xxx$.previous_interaction ではない
レスポンスのワイルドカード禁止"to": "*" は内部データ漏洩リスクverification_code 等がクライアントに露出

7. デバイス管理

機能説明検証テンプレート
FIDO2デバイス登録WebAuthn によるパスキー登録FIDO2, FAPI
FIDO2デバイス認証登録済みパスキーでの認証FIDO2, FAPI
FIDO-UAFデバイス登録自動デバイス登録 + device_secret発行CIBA
デバイス数上限最大登録デバイス数の制限(例: 5台)FIDO2, CIBA
Device Secret (JWT Bearer)デバイスシークレットによるトークン取得CIBA

8. 身元確認(eKYC)

機能説明検証テンプレート
身元確認申請eKYC フロー開始(apply)eKYC
審査結果取得外部サービスからの結果コールバック(evaluate-result)eKYC
verified_claims 発行身元確認済み属性の ID Token / UserInfo への反映eKYC
スコープトリガー特定スコープ要求時のみ身元確認を開始eKYC(transfers スコープ)
モック動作mock/no_action モードでローカル検証eKYC

9. マルチクライアント

third-party テンプレートで3種類のクライアントパターンを検証済み:

クライアント種別認証方式Grant TypePKCE用途
Web(Confidential)client_secret_basicauthorization_code + refresh_tokenWebアプリケーション
Mobile(Public)noneauthorization_code + refresh_token必須モバイルアプリ
M2Mclient_secret_basicclient_credentialsサービス間連携

10. テナント・セッション管理

全テンプレートで共通:

機能設定
マルチテナント組織 → テナント の階層構造
セッションタイムアウト24時間(86400秒)
管理APIManagement API でテナント/認可サーバー/クライアント/認証設定を CRUD
設定のフル置換更新PUT API による設定全体の置換(差分更新ではない)

対応プロトコル

テンプレートで実際に検証済みのプロトコル:

プロトコル検証テンプレート
OAuth 2.0 Authorization Code (RFC 6749)全テンプレート
OAuth 2.0 Client Credentials3rd
OAuth 2.0 JWT Bearer Grant (RFC 7523)CIBA
OpenID Connect Core 1.0全テンプレート
OpenID Connect Discovery全テンプレート
CIBA (Poll / Ping)CIBA, FAPI
FAPI 1.0 AdvancedFAPI
OpenID for Identity Assurance (verified_claims)eKYC
Token Introspection (RFC 7662)3rd, FAPI
Token Revocation (RFC 7009)全テンプレート

カスタムスコープの設定例

スコープ用途テンプレート
transfers送金操作(条件付きMFA / eKYCトリガー)MFA-E, eKYC, FAPI
identity_verification_application身元確認申請権限eKYC
api:read / api:writeカスタムAPIアクセス制御3rd
claims:authentication_devices認証デバイス情報クレームCIBA
read / account / writeFAPI Baseline/Advanced スコープFAPI