エンドツーエンドの外部 MFA 統合のためのキー・コンポーネントと情報
新しい外部 MFA 統合を有効化または設計する場合は、IBM® Verify で 2 つのキー・コンポーネントを考慮して定義する必要があります。
- MFA プロバイダー
- 外部 MFA プロバイダー統合の Verify パブリック・プロジェクションを表す構成。 実行時に、このコンポーネントは API クライアントとして機能します。 リクエストとレスポンスは、リアルタイムのWebhookを通じて送信されます。
- リアルタイムWebhook
- ターゲット外部 MFA プロバイダーに対して、セキュアな認証済みインターネット接続と HTTPS クライアントを提供します。 Webhook を API 規約適用ポイントとして指定します。 Webhook は、Verify の内部コンポーネントとターゲット外部 MFA プロバイダーの間で送信される要求と応答を仲介します。
MFA プロバイダー情報
Verify MFA プロバイダーは、外部 MFA プロバイダーの Verify 概念化を表します。 これは、公開される MFA 要素機能、およびターゲット MFA プロバイダーでの Verify ユーザーの識別方法と解決方法を定義します。 MFA プロバイダー構成を以下の例に示します。
{
"name": "The Provider Name",
"description": "ISV - External Provider Integration",
"enabled": true,
"credentialPrefix": "emfa",
"webhookId": "{{webhook.id}}",
"uniqueNameAttribute": "{{unique.name.attribute}}",
"capabilities": [
"mobile_otp",
"mobile_bio",
"custom_totp"
]
}以下の表に、主要な構成属性を示します。
| 構成属性 | 説明 |
|---|---|
name |
Verify で認識されている MFA プロバイダーのショート・フレンドリー名。 |
description |
プロバイダーについての簡単な説明。 |
enabled |
実行時にプロバイダーを有効にするかどうかを示します。 「true」の場合、プロバイダーは MFA チャレンジに使用可能と見なされます。 |
credentialPrefix |
アクセス・ポリシー評価で各要素機能に追加され、アクセス・ポリシー評価によって参照される短い接頭部。 この値は、ご使用の Verify テナント内のすべての構成済み MFA プロバイダー全体で固有でなければなりません。 Verify 内では、外部 MFA 要素は {credentialPrefix}:{capability} として識別されます。注: この値にはコロン( .::)を含めてはいけません。 |
webhookId |
MFAプロバイダーに関連付けられ、リアルタイムWebhook設定インスタンスの基盤となる設定の Verify UUID。 |
uniqueNameAttribute |
Verify テナントで構成されている Verify 標準属性またはカスタム属性の名前。 この属性は、認証済み Verify ユーザーから外部 MFA プロバイダー・ユーザーへのマッピングを提供します。 この値は、ターゲット MFA プロバイダーで特定のユーザーとその MFA 登録および機能をルックアップするために使用されます。 |
| 機能 | Verify から公開され、外部 MFA プロバイダーによってサポートされる 1 つ以上の MFA 要素機能のリスト。 値はストリングで、任意の有効な文字ストリングを含むことができます。 機能のランタイム動作は、登録ルックアップ・パターンおよびその他の 1 つのランタイム・チャレンジ・パターンにマップ可能でなければなりません。 |
Webhook 情報
リアルタイムWebhookの設定は、MFAプロバイダーの設定に関連付ける必要があります。 リアルタイムWebhookは、ISVと対象のMFAプロバイダーサービス間の技術的なランタイム統合を実現します。 理想的には、Webhook は外部 MFA 規約が適用されるポイントでもあり、そのため ISV とターゲット MFA プロバイダーの間の API およびプロトコル・メディエーターとして機能します。 Webhook が API 規約とメディエーションを実施する機能をサポートする主なメカニズムは、「リソース」と「変換」です。 外部 MFA サポートおよび統合の場合、「リソース」の定義は ISV 外部 MFA API 規約と一致している必要があります。
以下のサンプルコードは、前のセクションで紹介したMFAプロバイダーに対応したリアルタイムWebhookの例です。
{
"name": "Some MFA Provider",
"type": "realtime",
"urls": ["https://some.address.com"],
"authentication": {
"type": "oauth",
"oauth": {
"client_id": "some_client_id",
"client_secret": "some_client_secret",
"token_endpoint": "https://some.address.com/token",
"token_endpoint_auth_method": "client_secret_basic"
}
},
"resources": {
"enrollments": {
"suffix": "/v1/enrollments",
"method": "GET",
"transform": {
"outgoing": (CEL TRANSFORM),
"incoming": (CEL TRANSFORM)
}
},
"initiate": {
"suffix": "/v1/mfa",
"method": "POST",
"expectedStatus": [201]
"transform": {
"outgoing": (CEL TRANSFORM),
"incoming": (CEL TRANSFORM)
}
},
"validate": {
"suffix": "/v1/mfa",
"method": "POST",
"transform": {
"outgoing": (CEL TRANSFORM),
"incoming": (CEL TRANSFORM)
}
},
"custom_totp_1": {
"suffix": "/v1/mfa",
"method": "POST",
"transform": {
"outgoing": (CEL TRANSFORM),
"incoming": (CEL TRANSFORM)
}
},
"result": {
"suffix": "/v1/mfa/transactions",
"method": "GET",
"transform": {
"outgoing": (CEL TRANSFORM),
"incoming": (CEL TRANSFORM)
}
}
},
"purpose": ["external_mfa"]
}以下の表で、リソースに関連付けられている構成可能な属性について説明します。
Webhook 構成 API リファレンスを参照してください。
| 属性 | 説明 |
|---|---|
suffix |
オプション。 アウトバウンド要求で使用されるベース URL に追加する接尾部。 Webhook リソースからのアウトバウンド要求は、base URL + suffix に送信されます。 構成で定義されているものを超えるスラッシュは追加されません。 発信要求 URL は、発信変換を使用して変更できます。 例えば、前の enrollments のサンプルでは、ISV Webhook コンポーネントはターゲット MFA プロバイダーの API エンドポイント https://some.address.com/v1/enrollments を開始します。 |
method |
オプション。 発信 HTTP メソッドを POST から指定されたものに変更するメソッド。 API エンドポイントを開始するために使用される HTTP メソッド。 有効な値は、POST、PUT、GET、DELETE、PATCH です。メソッドは、発信変換を使用して変更できます。 |
transform.outgoing |
オプション。 送信前にアウトバウンド要求に適用されるデータ変換を定義します。 変換では、ISV 内部 MFA フレームワークから送信された要求エレメント body、headers、http
method、path、host にアクセスできます。 |
transform.incoming |
オプション。 ISV MFA フレームワークに戻る前に着信応答に適用されるデータ変換を定義します。 変換では、ISV 内部 MFA フレームワークから送信された要求エレメント body、headers、status_code、request (現在の応答を生成する元の要求) にアクセスできます。 |
exepctedStatus |
オプション。 これは、このWebhookによって起動されるAPIから返されることが期待される HTTP のステータスです。 属性が存在しない場合は、200 から 299 の範囲の状況コードが予期されます。 着信変換が実行される前に、予期される状況が検査されます。 「 HTTP 」のステータスを参照してください。 |
外部MFAプロバイダーは、外部リクエストの結果に基づいて、以下の応答を返すことができます。
以下の表は、外部MFA連携をサポートするためのWebhookリソースの設計における考慮事項をまとめたものです。 リソース設計は、サポートされている MFA 統合パターンのニーズによって決まります。| 応答 | 定義 |
|---|---|
| 保留 | 認証はまだ完了していません。 |
| SUCCESS | 認証に成功しました。 |
| FAILED | 認証に失敗しました。 |
| CANCELED | 認証が完了しなかったのは、あるエンティティが試行をキャンセルしたためです。 |
| TIMEOUT | タイムアウトが超過したため、認証が完了しませんでした。 |
| Webhook リソース | パターン | 説明 |
|---|---|---|
enrollments |
enrollment lookup | このリソースは、ISV 内部 MFA クライアントが特定のユーザーの MFA 登録および機能を検索する要求に応答したときに開始されます。 通常、このリソースは、ISV がランタイム MFA チャレンジの一環として、MFA 要素オプションの選択をユーザーに提示するときに必要になります。 |
{{mfa_capability_name}}_1 |
initiate - sms, otpまたは
|
このリソースは、MFA 要素の名前が {{mfa_capability_name}} 属性と一致すると、ISV MFA クライアント設定として開始されます。これは、機能パターンが |
{{mfa_capability_name}}_2 |
initiate + validate - sms, otp |
このリソースは、MFA 要素の名前が {{mfa_capability_name}} 属性と一致すると、ISV MFA クライアント設定として開始されます。 これは、MFA チャレンジを検証するために使用されます。 |
initiate |
initiate + validate - sms, otp)または initiate + wait for
completion - mobile push |
このリソースは、要素機能固有のリソースが定義されていない場合に、MFA チャレンジを開始するために使用されます。 |
validate |
initiate - sms, otp |
このリソースは、要素機能固有のリソースが定義されていない場合に、MFA チャレンジを検証するために使用されます。 |
result |
initiate + wait for completion - mobile push |
このリソースは、チャレンジの開始後に、MFA チャレンジの完了をポーリングするために使用されます。 通常、トランザクション ID、その他の状態データ、またはハンドルを返すには、以前の開始の応答が必要です。 |