Analyse adaptative des risques 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 répondre aux analyses basées sur le risque de leur système de gestion des accès sur place, comme Oracle Access Manager (OAM) ou les applications clients.

Les domaines d'identité fournissent une interface d'API REST adaptative pour permettre à 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 du magasin d'identités OAM et d'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 basé sur le risque adaptatif du domaine d'identité, le serveur OAM peut défier l'utilisateur avec un deuxième facteur. Si le score de risque est élevé, OAM peut refuser l'accès à John et lui présenter un message indiquant que sa tentative de connexion a échoué.

L'interface 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

  • Atténuer les risques : /admin/v1/sdk/adaptive/MitigateRisks

Pour effectuer des appels d'API REST vers 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 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 sur l'appareil utilisé par l'utilisateur pour se connecter et l'adresse IP réelle du client.

Pour collecter les informations sur l'appareil dont votre système de gestion des accès a besoin pour utiliser un fichier JavaScript d'empreinte numérique de l'appareil. Vous pouvez télécharger le fichier d'empreinte numérique JavaScript de l'appareil à 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 numérique. Utilisez ensuite la fonction getFingerprint() pour collecter l'empreinte numérique de l'appareil de l'utilisateur à envoyer à l'interface API REST adaptative des domaines d'identité.

Voir aussi Activer l'accès pour 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 des 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é d'alimentation du risque.
{
    "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 de 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 client de demander une 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 Mitigate Risk.
{
    "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 utilisateur réussie, fournissez SSO_THREAT_MITIGATION_SUCCESS.
  • Pour réinitialiser le mot de passe de l'utilisateur, fournissez 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é d'alimentation du risque :
{
    "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"
        }
    ]
}