Analyse adaptative des risques pour les applications client personnalisées

Les clients qui passent au cloud peuvent tirer parti des fonctionnalités adaptatives du domaine d'identité IAM pour répondre aux analyses basées sur les risques de leur système de gestion des accès sur site, tel qu'Oracle Access Manager (OAM), ou des applications client.

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

Par exemple, John Doe est un utilisateur de la banque 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 à des fins d'authentification. John Doe soumet ses informations d'identification et, sur la base du score de risque renvoyé par le moteur adaptatif basé sur les risques du domaine d'identité, le serveur OAM peut interroger l'utilisateur avec un second 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 d'API REST adaptative implémente trois cas d'utilisation sous la forme des adresses correspondantes :
  • 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 adresses, votre système de gestion des accès ou votre application personnalisée a besoin d'un jeton d'accès provenant d'une application d'informations d'identification client inscrite dans un domaine d'identité.
Remarque

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

L'interface d'API REST adaptative requiert que l'application client envoie des informations telles que l'identification de l'utilisateur, les informations du périphérique 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, utilisez un fichier JavaScript d'empreinte de périphérique. Vous pouvez télécharger le fichier JavaScript d'empreinte de périphérique à partir de la console du domaine d'identité.

  1. Connectez-vous à la console de domaine d'identité en tant qu'administrateur d'application.
  2. Développez le volet de navigation, cliquez sur Paramètres, puis sur Téléchargements.
  3. Sur la page Téléchargements, téléchargez l'utilitaire d'empreintes de périphérique Identity Cloud Service.

Le fichier que vous téléchargez est un fichier compressé (zip). Le fichier ZIP contient 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 des informations d'empreinte. Utilisez ensuite la fonction getFingerprint() pour collecter l'empreinte de périphérique de l'utilisateur à envoyer à l'interface d'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.

Renseigner le risque

Cette adresse est utilisée pour soumettre des données de risque à un domaine d'identité afin d'augmenter le score de risque de l'utilisateur.

La structure des commandes 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 de terminaison Renseigner 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 le score de risque. Vous pouvez utiliser les valeurs MAX_MFA_FAILED_ATTEMPTS ou MAX_PASSWORD_FAILED_ATTEMPTS.

Voici un exemple d'organisme 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 de périphérique et l'adresse IP seront validées par rapport à tous les événements à 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 critère de remplissage de 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

Cette adresse permet aux clients d'obtenir des informations sur les risques en cours pour un seul utilisateur, plusieurs utilisateurs ou tous les utilisateurs d'un domaine d'identité.

La structure des commandes 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 Extraire les informations sur le risque.
{
    "userNames": [
        "<user_name>"
    ]
}
Vous pouvez appeler l'adresse 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 de 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 permettant d'extraire les informations sur les risques 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 de terminaison d'extraction des informations de 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 les risques

Cette adresse permet aux applications client de demander l'atténuation du score de risque d'un utilisateur car l'utilisateur s'est connecté ou a réinitialisé son mot de passe.

La structure des commandes 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 Réduire 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": "SSO_THREAT_MITIGATION_SUCCESS"
}
L'attribut event du corps de la demande peut recevoir plusieurs valeurs :
  • Pour une connexion utilisateur réussie, indiquez SSO_THREAT_MITIGATION_SUCCESS.
  • Pour que la réinitialisation du mot de passe utilisateur réussisse, indiquez ADMIN_ME_PASSWORD_CHANGE_SUCCESS.
Voici un exemple de corps de demande à l'adresse Mitigate Risk de John Doe car il s'est connecté 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 critère de remplissage de 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"
        }
    ]
}