カスタム・クライアント・アプリケーションのアダプティブ・リスク分析

クラウドに移行する顧客は、IAMアイデンティティ・ドメイン適応機能を利用して、Oracle Access Manager (OAM)やクライアント・アプリケーションなどのオンプレミス・アクセス管理システムのリスクベースの分析を満たすことができます。

アイデンティティ・ドメインは、これらのオンプレミス・アクセス管理システムまたはクライアント・アプリケーションがアイデンティティ・ドメイン・リスクベース・エンジンを使用して、ユーザーの認証アクティビティを評価できるようにするための適応REST APIインタフェースを提供します。

たとえば、John DoeはOAMアイデンティティ・ストアおよびアイデンティティ・ドメイン内のユーザーです。Johnは、OAMによって保護されている財務アプリケーションにアクセスします。OAMサーバーは、認証のためにOAMサインイン・ページにリダイレクトします。John Doeが資格証明を発行するとともに、OAMサーバーは、アイデンティティ・ドメイン適応型リスク・ベース・エンジンによって返されたリスク・スコアに基づいて、2番目のファクタを使用してユーザーの認証を試みる場合があります。リスク・スコアが高い場合、OAMはJohnのアクセスを拒否し、サインインに失敗したことを示すメッセージを表示します。

アダプティブREST APIインタフェースは、次の3つのユースケースを対応するエンドポイントの形式で実装します:
  • リスクの移入: /admin/v1/sdk/adaptive/PopulateRisks

  • リスク情報のフェッチ: /admin/v1/sdk/adaptive/FetchRisks

  • リスクの軽減: /admin/v1/sdk/adaptive/MitigateRisks

これらのエンドポイントに対してREST APIコールを実行するには、アクセス管理システムまたはカスタム・アプリケーションに、アイデンティティ・ドメインに登録されているクライアント資格証明アプリケーションからのアクセス・トークンが必要です。
ノート

アクセス・トークンを取得するには、OAuth 2を使用したREST APIへのアクセスを参照してください。

アダプティブREST APIインタフェースでは、ユーザーID、ユーザーがサインインに使用するデバイスの情報、クライアントの実際のIPアドレスなどの情報をクライアント・アプリケーションが送信する必要があります。

アクセス管理システムでデバイス・フィンガープリントJavaScriptファイルを使用する必要があるデバイス情報を収集します。デバイス・フィンガープリントJavaScriptファイルは、アイデンティティ・ドメイン・コンソールからダウンロードできます。

  1. アプリケーション管理者としてアイデンティティ・ドメイン・コンソールにサインインします。
  2. 「Navigation Drawer」を展開し、「Settings」「Downloads」をクリックします。
  3. 「ダウンロード」ページで、Identity Cloud Serviceデバイス・フィンガープリント・ユーティリティをダウンロードします。

ダウンロードするファイルは、圧縮(zip)ファイルです。zipファイル内には、アクセス管理システムのサインイン・ページまたはクライアント・アプリケーション自体がフィンガープリント情報を収集するためにロードする必要があるJavaScriptファイルがあります。次に、getFingerprint()関数を使用して、アイデンティティ・ドメイン適応型REST APIインタフェースに送信するユーザーのデバイス・フィンガープリントを収集します。

カスタム・サインイン・ページの不明なデバイス・イベントに対するアクセスの有効化も参照してください。

リスクの移入

このエンドポイントを使用して、リスク・データをアイデンティティ・ドメインに送信し、ユーザーのリスク・スコアを向上させます。

cURLコマンドの構造は次のとおりです:
   curl -k -X POST 'https://<domainURL>/admin/v1/sdk/adaptive/PopulateRisks' 
   -H 'Authorization: Bearer <Access_Token>' 
   -H 'Accept:application/json' 
   -d '<Request_Body>'
次に、リスクの移入エンドポイントのリクエスト本文の構造を示します。
{
    "userName": "<User_Name>",
    "data": [
        {
            "name": "device",
            "value": "<result_of_the_devicefingerprint_javascript_file>"
        },
        {
            "name": "client-ip",
            "value": "<ip_address_of_the_user_browser>"
        }
    ],
    "event": "MAX_PASSWORD_FAILED_ATTEMPTS"
}

event属性はオプションです。リクエストに存在しない場合、すべてのリスク・イベントがリスク・スコアの評価に使用されます。MAX_MFA_FAILED_ATTEMPTS値またはMAX_PASSWORD_FAILED_ATTEMPTS値を使用できます。

次に、IPアドレス10.11.12.13からアクセス管理システムにサインインしようとするJohn Doeのリスクを評価するリクエスト本文の例を示します。デバイス・フィンガープリントおよびIPアドレスは、アイデンティティ・ドメイン内の有効なすべてのリスク・イベントに対して検証されます。
   curl -k -X POST https://<domainURL>/v1/sdk/adaptive/PopulateRisks \
     -H 'Content-Type: application/json' \
  
   -H 'Authorization: Bearer <Access_Token>' \
  
   -d '{
    "userName": "johndoe@example.com",
    "data": [
        {
            "name": "device",
            "value": "{\"currentTime\":\"Wed Nov 13 2019 16:57:34 GMT-0700 (Pacific Daylight Time)\",\"screenWidth\":1920,\"screenHeight\":1080,\"screenColorDepth\":24,\"screenPixelDepth\":24,\"windowPixelRatio\":1,\"language\":\"en-US\",\"userAgent\":\"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0\"}"
        },
        {
            "name": "client-ip",
            "value": "10.11.12.13"
        }
    ]
}'
リスクの移入エンドポイントのレスポンス本文の例を次に示します。
{
    "userName": "johndoe@example.com",
    "riskLevel": "LOW",
    "riskScores": [
        {
            "lastUpdateTimestamp": "2022-11-12T10:41:57.997Z",
            "score": 15,
            "riskLevel": "LOW",
            "value": "ORACLE_IDCS",
            "status": "ACTIVE",
            "source": "Default Risk Provider",
            "$ref": "https://<domainURL>/admin/v1/RiskProviderProfiles/ORACLE_IDCS"
        }
    ]
}

リスク情報のフェッチ

このエンドポイントを使用すると、単一ユーザー、複数のユーザーまたはアイデンティティ・ドメイン内のすべてのユーザーの現在のリスク情報をクライアントが取得できます。

cURLコマンドの構造は次のとおりです:
   curl -k 
   -X POST 'https://<domainURL>/admin/v1/sdk/adaptive/FetchRisks' 
   -H 'Authorization: Bearer <Access_Token>' 
   -H 'Accept:application/json' 
   -d '<Request_Body>'
次に、リスク情報のフェッチcURLコマンドのリクエスト本文の構造を示します。
{
    "userNames": [
        "<user_name>"
    ]
}
複数のユーザーに対してリスク情報のフェッチ・エンドポイントをコールできます。そのためには、cURLコマンドで次のリクエストボディ構造を使用します。
{
    "userNames": [
        "<user_name_1>",
        "<user_name_2>"
    ]
}
アイデンティティ・ドメイン内のすべてのユーザーのリスク情報をフェッチする場合は、cURLコマンドで次のリクエスト本文構造を使用します。
{}
John Doeのリスク情報をフェッチするリクエスト本文の例を次に示します。
   curl -k -X POST https://<domainURL>/admin/v1/sdk/adaptive/FetchRisks \
     -H 'Content-Type: application/json' \
  
   -H "Authorization: Bearer <Access_Token>' \
  
   -d '{
    "userNames": [
        "johndoe@example.com"
    ]
}'
次の例は、リスク情報のフェッチ・エンドポイントのレスポンス本文です。
{
    "totalResults": 1,
    "resources": [
        {
            "userName": "johndoe@example.com",
            "riskLevel": "LOW",
            "riskScores": [
                {
                    "lastUpdateTimestamp": "2022-11-13T18:41:57.997Z",
                    "score": 15,
                    "riskLevel": "LOW",
                    "value": "ORACLE_IDCS",
                    "status": "ACTIVE",
                    "source": "Default Risk Provider",
                    "$ref": "https://<domainURL>/admin/v1/RiskProviderProfiles/ORACLE_IDCS"
                }
            ]
        }
    ],
    "startIndex": 1,
    "itemsPerPage": 50
}

リスクの軽減

このエンドポイントを使用すると、ユーザーがログインまたはパスワードのリセットに成功したため、クライアント・アプリケーションはユーザーのリスク・スコアの軽減をリクエストできます。

cURLコマンドの構造は次のとおりです:
   curl -k 
   -X POST 'https://<domainURL>/admin/v1/sdk/adaptive/MitigateRisks' 
   -H 'Authorization: Bearer <Access_Token>' 
   -H 'Accept:application/json' 
    -d '<Request_Body>'
次に、リスクの軽減cURLコマンドのリクエストボディの構造を示します。
{
    "userName": "<User_Name>",
    "data": [
        {
            "name": "device",
            "value": "<result_of_the_devicefingerprint_javascript_file>"
        },
        {
            "name": "client-ip",
            "value": "<ip_address_of_the_user_browser>"
        }
    ],
    "event": "SSO_THREAT_MITIGATION_SUCCESS"
}
リクエスト本文のevent属性は、次の複数の値を取得できます:
  • ユーザー・サインインを成功させるには、SSO_THREAT_MITIGATION_SUCCESSを指定します。
  • ユーザー・パスワードのリセットを成功させるには、ADMIN_ME_PASSWORD_CHANGE_SUCCESSを指定します。
John DoeはIPアドレス10.11.12.13からアクセス管理システムに正常にサインインしたため、John Doeのリスクの軽減エンドポイントへのリクエスト本文の例を次に示します。
   curl -X POST \
  https://<domainURL>/admin/v1/sdk/adaptive/MitigateRisks \
     -H 'Content-Type: application/json' \
     -H 'Authorization: Bearer <Access_Token>' \
  -d '{
    "userName": "johndoe@example.com",
    "data": [
        {
            "name": "device",
            "value": "{\"currentTime\":\"Thu Nov 14 2019 10:11:18 GMT-0700 (Pacific Daylight Time)\",\"screenWidth\":1440,\"screenHeight\":900,\"screenColorDepth\":24,\"screenPixelDepth\":24,\"windowPixelRatio\":2,\"language\":\"en-US\",\"userAgent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36\"}"
        },
        {
            "name": "client-ip",
            "value": "10.11.12.13"
        }
    ],
    "event": "SSO_THREAT_MITIGATION_SUCCESS"
}'
リスクの移入エンドポイントのレスポンス本文の例を次に示します:
{
    "userName": "johndoe@example.com",
    "riskLevel": "LOW",
    "riskScores": [
        {
            "lastUpdateTimestamp": 1574726401582,
            "score": 10,
            "riskLevel": "LOW",
            "providerId": "ORACLE_IDCS",
            "providerStatus": "ACTIVE",
            "providerDescription": "Default Risk Provider",
            "reference": "https://<domainURL>/admin/v1/RiskProviderProfiles/ORACLE_IDCS"
        }
    ]
}