金融グレード
銀行・証券・決済サービスに求められるセキュリティ水準を、標準仕様で実現します。
「API連携時のなりすまし」「トークン窃取による不正送金」「中間者攻撃」── これらのリスクに対して、国際標準(FAPI)に準拠した多層防御を提供します。
こんな課題はありませんか?
| 課題 | idp-serverでの解 決策 |
|---|---|
| API連携先が本物かどうか確認したい | 相互証明書認証(mTLS) でアプリの身元を証明書で検証 |
| アクセストークンが盗まれたら不正利用される | 証明書バウンドトークン でトークン単体では使えない仕組みに |
| 認可リクエストがブラウザ上で改ざんされるかも | 事前登録(PAR) でリクエストをサーバー間で直接受け渡し |
| 認可レスポンスが途中で差し替えられるかも | 署名付きレスポンス(JARM) で改ざんを即座に検知 |
| 高額送金時に本人の意思を確実に確認したい | モバイル承認(CIBA) でスマホの生体認証による取引承認 |
| 残高照会と送金で同じ認証レベルでいいのか | 多段認証ポリシー で操作の重要度に応じて認証レベルを自動切替 |
| 本人確認済みのユーザーだけにAPI利用を許可したい | 身元確認(eKYC)+ verified_claims で本人確認済みユーザーのみアクセス可能に |
| 金融庁やOpenID Foundationの認定基準を満たせるか | FAPI 1.0 Advanced 準拠 で国際標準に対応 |
守れること
1. API連携の安全性
「 このAPIを叩いているのは、本当に許可されたアプリか?」
通常のOAuth 2.0では、Client ID/Secretが漏洩すればなりすましが可能です。 金融グレードでは、クライアント証明書による相互認証(mTLS) を追加します。
一般的なOAuth 2.0:
アプリ → 「IDとSecretはこれです」 → サーバー
⚠️ IDとSecretが漏れたら誰でもなりすませる
金融グレード:
アプリ → 「IDとSecretに加え、この証明書で身元を証明します」 → サーバー
✅ 証明書の秘密鍵がなければなりすまし不可能
✅ 発行されたトークンもこの証明書に紐付く
効果: トークンだけ盗んでも、証明書がなければAPIは使えません。
2. リクエスト・レスポンスの完全性
「ブラウザを経由する通信が途中で書き換えられていないか?」
認可リクエストがブラウザのアドレスバーを通過する際、パラメータの改ざんリスクがあります。
一般的なOAuth 2.0:
アプリ → ブラウザ → サーバー
↑ ここで送金額や送金先が書き換えられるかも
金融グレード:
Step 1: アプリ → サーバー(直接通信で事前登録: PAR)
Step 2: ブラウザには参照用IDだけ渡す
Step 3: サーバー → アプリ(署名付きレスポンス: JARM)
✅ パラメータはサーバー間で直接やり取り
✅ レスポンスは署名済みなので改ざん検知可能
効果: 中間者攻撃によるパラメータ改ざんを防止します。
3. 取引の重要度に応じた認証
「残高照会と1,000万円の送金が同じ認証レベルでいいのか?」
操作の重 要度に応じて、自動的に認証レベルを切り替えます。
残高照会(read, account)
→ メールOTPで認証
→ 低リスク操作なので簡易認証
振込設定の変更(write)
→ FIDO2 生体認証で認証
→ 設定変更は中リスク
高額送金(transfers)
→ FIDO2 生体認証 + メールOTP
→ 高リスク操作なので二重認証
効果: ユーザー体験を損なわず、リスクに見合った認証を実現します。
4. モバイルでの取引承認
「PCで送金操作 → スマホで最終承認」という二段階承認フローを実現します。
銀行員/ユーザーがPCで操作 モバイルアプリ
│ │
│ 「A社へ1,000万円送金」 │
│ [実行] │
│ ↓ │
│ 「スマホで承認してください」 │
│ │ プッシュ通知が届く
│ 待機中... │ 「A社へ1,000万円の送金を
│ │ 承認しますか?」
│ │
│ │ [指紋認証で承認]
│ ↓ │
│ 送金完了 │
効果: 操作端末とは別のデバイスでの生体認証により、不正送金リスクを大幅に低減します。