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 à l'analyse basée 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 pour permettre à ces systèmes de gestion des accès sur site ou à ces 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 dans la banque 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 informations d'identification et, sur la base du score de risque renvoyé par le moteur adaptatif basé sur le risque du domaine d'identité, le serveur OAM peut contester 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 d'API REST adaptative implémente trois cas d'utilisation sous la forme des adresses correspondantes :
  • Remplir 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 à partir 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 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 la véritable adresse IP 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 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, sélectionnez Paramètres, puis Téléchargements.
  3. Sur la page Téléchargements, téléchargez l'utilitaire d'empreinte d'appareil 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 les informations d'empreinte. Utilisez ensuite la fonction getFingerprint() pour collecter l'empreinte d'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.

Renseigner le risque

Cette adresse permet de soumettre des données de risque à un domaine d'identité afin d'augmenter le score 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 l'adresse 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. Si aucun événement de risque n'est 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 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 de l'appareil et l'adresse IP 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 critère de risque renseigné.
{
    "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 de risque

Cette adresse permet aux clients d'obtenir des informations à jour sur les risques 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 Extraire les informations de 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>"
    ]
}
Pour extraire les informations de risque de 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 de risque de 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 de l'adresse d'informations de risque d'extraction.
{
    "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
}

Limiter les risques

Cette adresse permet aux applications client de demander une réduction du score de risque d'un utilisateur car l'utilisateur 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 d'atténuation des risques.
{
    "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 le mot de passe utilisateur soit réinitialisé, indiquez ADMIN_ME_PASSWORD_CHANGE_SUCCESS.
Voici un exemple de corps de demande à l'adresse d'atténuation des risques pour 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 risque renseigné :
{
    "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"
        }
    ]
}