エンドツーエンドの外部 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 つのランタイム・チャレンジ・パターンにマップ可能でなければなりません。
詳細については、MFA プロバイダー構成 API リファレンスを参照してください。

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"]
}
以下の表で、リソースに関連付けられている構成可能な属性について説明します。
属性 説明
suffix オプション。 アウトバウンド要求で使用されるベース URL に追加する接尾部。 Webhook リソースからのアウトバウンド要求は、base URL + suffix に送信されます。 構成で定義されているものを超えるスラッシュは追加されません。 発信要求 URL は、発信変換を使用して変更できます。 例えば、前の enrollments のサンプルでは、ISV Webhook コンポーネントはターゲット MFA プロバイダーの API エンドポイント https://some.address.com/v1/enrollments を開始します。
method オプション。 発信 HTTP メソッドを POST から指定されたものに変更するメソッド。 API エンドポイントを開始するために使用される HTTP メソッド。 有効な値は、POSTPUTGETDELETEPATCH です。メソッドは、発信変換を使用して変更できます。
transform.outgoing オプション。 送信前にアウトバウンド要求に適用されるデータ変換を定義します。 変換では、ISV 内部 MFA フレームワークから送信された要求エレメント bodyheadershttp methodpathhost にアクセスできます。
transform.incoming オプション。 ISV MFA フレームワークに戻る前に着信応答に適用されるデータ変換を定義します。 変換では、ISV 内部 MFA フレームワークから送信された要求エレメント bodyheadersstatus_coderequest (現在の応答を生成する元の要求) にアクセスできます。
exepctedStatus オプションExpectedStatus これは、このWebhookによって起動されるAPIから返されることが期待される HTTP のステータスです。 属性が存在しない場合は、200 から 299 の範囲の状況コードが予期されます。 着信変換が実行される前に、予期される状況が検査されます。 「 HTTP 」のステータスを参照してください。
Webhook 構成 API リファレンスを参照してください。
外部MFAプロバイダーは、外部リクエストの結果に基づいて、以下の応答を返すことができます。
応答 定義
保留 認証はまだ完了していません。
SUCCESS 認証に成功しました。
FAILED 認証に失敗しました。
CANCELED 認証が完了しなかったのは、あるエンティティが試行をキャンセルしたためです。
TIMEOUT タイムアウトが超過したため、認証が完了しませんでした。
以下の表は、外部MFA連携をサポートするためのWebhookリソースの設計における考慮事項をまとめたものです。 リソース設計は、サポートされている MFA 統合パターンのニーズによって決まります。
Webhook リソース パターン 説明
enrollments enrollment lookup このリソースは、ISV 内部 MFA クライアントが特定のユーザーの MFA 登録および機能を検索する要求に応答したときに開始されます。 通常、このリソースは、ISV がランタイム MFA チャレンジの一環として、MFA 要素オプションの選択をユーザーに提示するときに必要になります。
{{mfa_capability_name}}_1 initiate - sms, otp

または

validate - totp

このリソースは、MFA 要素の名前が {{mfa_capability_name}} 属性と一致すると、ISV MFA クライアント設定として開始されます。

これは、機能パターンが initiate+validate の場合に、MFA チャレンジを開始するために使用されます。 これは、機能パターンが validate only の場合に、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、その他の状態データ、またはハンドルを返すには、以前の開始の応答が必要です。