Analyse adaptative du risque pour les applications client personnalisées

Les clients qui passent au nuage peuvent tirer parti des capacités adaptatives du domaine d'identité IAM pour effectuer des analyses basées sur le risque pour leur système de gestion de l'accès sur place, comme Oracle Access Manager (OAM) ou les applications clients.

Les domaines d'identité fournissent une interface API REST adaptative permettant à ces systèmes de gestion des accès sur place ou à ces applications clients d'utiliser un moteur basé sur le risque du domaine d'identité pour évaluer les activités d'authentification des utilisateurs.

Par exemple, John Doe est un utilisateur dans le magasin d'identités OAM et dans un domaine d'identité. John accède à une application financière protégée par OAM. Le serveur OAM le redirige vers la page de connexion OAM pour authentification. John Doe soumet ses données d'identification et, en fonction de la note de risque retournée par le moteur adaptatif basé sur le risque du domaine d'identité, le serveur OAM peut mettre l'utilisateur au défi avec un deuxième facteur. Si la note de risque est élevée, OAM peut refuser l'accès à John et lui présenter un message indiquant que sa tentative de connexion a échoué.

L'interface d'API REST adaptative met en oeuvre trois cas d'utilisation sous la forme des points d'extrémité correspondants :
  • Alimenter le risque : /admin/v1/sdk/adaptive/PopulateRisks

  • Extraire les informations sur le risque : /admin/v1/sdk/adaptive/FetchRisks

  • Augmenter les risques : /admin/v1/sdk/adaptive/MitigateRisks

Pour effectuer des appels d'API REST à ces points d'extrémité, votre système de gestion des accès ou votre application personnalisée a besoin d'un jeton d'accès à partir d'une application de données d'identification de client enregistrée dans un domaine d'identité.
Note

Pour obtenir un jeton d'accès, voir Utilisation de OAuth 2 pour accéder à l'API REST.

L'interface API REST adaptative nécessite que l'application client envoie des informations telles que l'identification de l'utilisateur, les informations de l'appareil que l'utilisateur utilise pour se connecter et l'adresse IP réelle du client.

Pour collecter les informations de périphérique dont votre système de gestion des accès a besoin pour utiliser un fichier JavaScript d'empreinte numérique de périphérique. Vous pouvez télécharger le fichier d'empreinte numérique de l'appareil JavaScript à partir de la console du domaine d'identité.

  1. Connectez-vous à la console du domaine d'identité en tant qu'administrateur d'application.
  2. Développez le Tiroir de navigation, sélectionnez Paramètres, puis Téléchargements.
  3. Dans la page Téléchargements, téléchargez l'utilitaire d'empreinte numérique de l'appareil Identity Cloud Service.

Le fichier que vous téléchargez est un fichier compressé (zip). Dans le fichier zip, il y a un fichier JavaScript que la page de connexion au système de gestion des accès ou l'application client elle-même doit charger pour collecter les informations d'empreinte digitale. Utilisez ensuite la fonction getFingerprint() pour collecter l'empreinte numérique de l'appareil de l'utilisateur à envoyer à l'interface d'API REST adaptative des domaines d'identité.

Voir aussi Activer l'accès à un événement d'appareil inconnu pour une page de connexion personnalisée.

Alimenter le risque

Ce point d'extrémité est utilisé pour soumettre les données de risque à un domaine d'identité afin d'augmenter la note de risque de l'utilisateur.

La structure de commande cURL est la suivante :
   curl -k -X POST 'https://<domainURL>/admin/v1/sdk/adaptive/PopulateRisks' 
   -H 'Authorization: Bearer <Access_Token>' 
   -H 'Accept:application/json' 
   -d '<Request_Body>'
Voici la structure du corps de la demande pour le point d'extrémité Alimenter le risque.
{
    "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"
}

L'attribut event est facultatif. S'il n'est pas présent dans la demande, tous les événements de risque seront utilisés pour évaluer la note de risque. Vous pouvez utiliser les valeurs MAX_MFA_FAILED_ATTEMPTS ou MAX_PASSWORD_FAILED_ATTEMPTS.

Voici un exemple de corps de demande pour évaluer le risque que John Doe tente de se connecter au système de gestion des accès à partir de l'adresse IP 10.11.12.13. L'empreinte numérique et l'adresse IP de l'appareil seront validées par rapport à tous les événements de risque activés dans un domaine d'identité.
   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"
        }
    ]
}'
Voici un exemple de corps de réponse du point d'extrémité de risque d'alimentation.
{
    "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"
        }
    ]
}

Extraire les informations sur le risque

Ce point d'extrémité permet aux clients d'obtenir des informations de risque courantes pour un seul utilisateur, plusieurs utilisateurs ou pour tous les utilisateurs d'un domaine d'identité.

La structure de commande cURL est la suivante :
   curl -k 
   -X POST 'https://<domainURL>/admin/v1/sdk/adaptive/FetchRisks' 
   -H 'Authorization: Bearer <Access_Token>' 
   -H 'Accept:application/json' 
   -d '<Request_Body>'
Voici la structure du corps de la demande pour la commande cURL Fetch Risk Info.
{
    "userNames": [
        "<user_name>"
    ]
}
Vous pouvez appeler le point d'extrémité d'extraction des informations sur le risque pour plusieurs utilisateurs. Pour ce faire, utilisez la structure de corps de demande suivante avec la commande cURL.
{
    "userNames": [
        "<user_name_1>",
        "<user_name_2>"
    ]
}
Si vous voulez extraire les informations sur le risque pour tous les utilisateurs d'un domaine d'identité, utilisez la structure de corps de demande suivante avec la commande cURL.
{}
Voici un exemple de corps de demande pour extraire les informations sur le risque pour 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"
    ]
}'
Voici un exemple de corps de réponse du point d'extrémité d'extraction des informations sur le risque.
{
    "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
}

Atténuer le risque

Ce point d'extrémité permet aux applications clients de demander l'atténuation de la note de risque d'un utilisateur, car celui-ci s'est connecté ou a réinitialisé son mot de passe.

La structure de commande cURL est la suivante :
   curl -k 
   -X POST 'https://<domainURL>/admin/v1/sdk/adaptive/MitigateRisks' 
   -H 'Authorization: Bearer <Access_Token>' 
   -H 'Accept:application/json' 
    -d '<Request_Body>'
Voici la structure du corps de la demande pour la commande cURL de réduction du risque.
{
    "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"
}
L'attribut event du corps de la demande peut recevoir plusieurs valeurs :
  • Pour une connexion réussie de l'utilisateur, fournissez SSO_THREAT_MITIGATION_SUCCESS.
  • Pour réinitialiser le mot de passe de l'utilisateur, indiquez ADMIN_ME_PASSWORD_CHANGE_SUCCESS.
Voici un exemple de corps de demande au point d'extrémité Atténuer les risques pour John Doe, car il s'est connecté avec succès au système de gestion des accès à partir de l'adresse IP 10.11.12.13.
   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"
}'
Voici un exemple de corps de réponse du point d'extrémité de risque d'alimentation :
{
    "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"
        }
    ]
}