Análisis de riesgo adaptable para aplicaciones de cliente personalizadas

Los clientes que se trasladan a la nube pueden aprovechar las capacidades adaptables del dominio de identidad de IAM para realizar análisis basados en riesgos para su sistema de gestión de acceso local, como Oracle Access Manager (OAM), o aplicaciones cliente.

Los dominios de identidad proporcionan una interfaz API de REST adaptable que permite a estos sistemas de gestión de acceso locales o aplicaciones de cliente utilizar un motor basado en riesgos de dominio de identidad para evaluar las actividades de autenticación de los usuarios.

Por ejemplo, John Doe es un usuario del almacén de identidades de OAM y de un dominio de identidad. John accede a una aplicación financiera protegida por OAM. El servidor de OAM lo redirige a la página de conexión de OAM para la autenticación. John Doe envía sus credenciales y, en función de la puntuación de riesgo devuelta por el motor basado en riesgos adaptativo del dominio de identidad, el servidor de OAM puede desafiar al usuario con un segundo factor. Si la puntuación de riesgo es alta, OAM puede denegar el acceso a John y presentarle un mensaje que indique que falló su intento de iniciar sesión.

La interfaz de la API de REST adaptativa implanta tres casos de uso en forma de puntos finales correspondientes:
  • Rellenar riesgo: /admin/v1/sdk/adaptive/PopulateRisks

  • Recuperar información de riesgo: /admin/v1/sdk/adaptive/FetchRisks

  • Mitigue riesgos: /admin/v1/sdk/adaptive/MitigateRisks

Para realizar llamadas a la API de REST a estos puntos finales, su sistema de gestión de acceso o aplicación personalizada necesita un token de acceso de una aplicación de credenciales de cliente registrada en un dominio de identidad.
Nota

Para obtener un token de acceso, consulte Uso de OAuth 2 para acceder a la API de REST.

La interfaz de API de REST adaptativa requiere que la aplicación cliente envíe información como la identificación del usuario, la información del dispositivo que el usuario utiliza para conectarse y la dirección IP verdadera del cliente.

Para recopilar información de dispositivo que el sistema de gestión de acceso necesita para utilizar un archivo JavaScript de huella de dispositivo. Puede descargar el archivo JavaScript de huella de dispositivo desde la consola del dominio de identidad.

  1. Inicie sesión en la consola del dominio de identidad como administrador de la aplicación.
  2. Expanda el Cajón de navegación, haga clic en Configuración y, a continuación, haga clic en Descargas.
  3. En la página Descargas, descargue la utilidad de huella de dispositivo de Identity Cloud Service.

El archivo que descarga es un archivo comprimido (zip). Dentro del archivo zip hay un archivo JavaScript que la página de conexión del sistema de gestión de acceso o la propia aplicación cliente debe cargar para recopilar información de huella. A continuación, utilice la función getFingerprint() para recopilar la huella del dispositivo del usuario para enviarla a la interfaz de API de REST adaptativa de los dominios de identidad.

Consulte también Activación del acceso para un evento de dispositivo desconocido para una página de conexión personalizada.

Rellenar riesgo

Este punto final se utiliza para enviar datos de riesgo a un dominio de identidad para aumentar la puntuación de riesgo del usuario.

La estructura de comandos de cURL es:
   curl -k -X POST 'https://<domainURL>/admin/v1/sdk/adaptive/PopulateRisks' 
   -H 'Authorization: Bearer <Access_Token>' 
   -H 'Accept:application/json' 
   -d '<Request_Body>'
A continuación se muestra la estructura del cuerpo de la solicitud para el punto final Rellenar riesgo.
{
    "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"
}

El atributo event es opcional. Si no está presente en la solicitud, se utilizarán todos los eventos de riesgo para evaluar la puntuación de riesgo. Puede utilizar los valores MAX_MFA_FAILED_ATTEMPTS o MAX_PASSWORD_FAILED_ATTEMPTS.

A continuación se muestra un ejemplo de un organismo de solicitud para evaluar el riesgo de que John Doe intente iniciar sesión en el sistema de gestión de acceso desde la dirección IP 10.11.12.13. La huella del dispositivo y la dirección IP se validarán con respecto a todos los eventos de riesgo activados en un dominio de identidad.
   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"
        }
    ]
}'
A continuación se muestra un ejemplo del cuerpo de respuesta del punto final de riesgo de relleno.
{
    "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"
        }
    ]
}

Recuperar información de riesgo

Este punto final permite a los clientes obtener información de riesgo actual para un único usuario, varios usuarios o para todos los usuarios de un dominio de identidad.

La estructura de comandos de cURL es:
   curl -k 
   -X POST 'https://<domainURL>/admin/v1/sdk/adaptive/FetchRisks' 
   -H 'Authorization: Bearer <Access_Token>' 
   -H 'Accept:application/json' 
   -d '<Request_Body>'
A continuación se muestra la estructura del cuerpo de solicitud para el comando Recuperar información de riesgo cURL.
{
    "userNames": [
        "<user_name>"
    ]
}
Puede llamar al punto final de recuperación de información de riesgo para varios usuarios. Para hacerlo, use la siguiente estructura de cuerpo de solicitud con el comando cURL.
{
    "userNames": [
        "<user_name_1>",
        "<user_name_2>"
    ]
}
Si desea recuperar información de riesgo para todos los usuarios de un dominio de identidad, utilice la siguiente estructura de cuerpo de solicitud con el comando cURL.
{}
A continuación se muestra un ejemplo de un cuerpo de solicitud para recuperar información de riesgo para 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"
    ]
}'
A continuación se muestra un ejemplo del cuerpo de respuesta del punto final de información de riesgo de recuperación.
{
    "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
}

Mitigue riesgos

Este punto final permite a las aplicaciones cliente solicitar la mitigación de la puntuación de riesgo de un usuario porque el usuario se ha conectado o ha restablecido su contraseña correctamente.

La estructura de comandos de cURL es:
   curl -k 
   -X POST 'https://<domainURL>/admin/v1/sdk/adaptive/MitigateRisks' 
   -H 'Authorization: Bearer <Access_Token>' 
   -H 'Accept:application/json' 
    -d '<Request_Body>'
A continuación se muestra la estructura del cuerpo de la solicitud para el comando Mitigate Risk 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"
}
El atributo event del cuerpo de la solicitud puede recibir varios valores:
  • Para iniciar sesión de usuario correctamente, proporcione SSO_THREAT_MITIGATION_SUCCESS.
  • Para restablecer la contraseña de usuario correctamente, proporcione ADMIN_ME_PASSWORD_CHANGE_SUCCESS.
A continuación se muestra un ejemplo de un cuerpo de solicitud para el punto final Mitigate Risk de John Doe porque se ha conectado correctamente al sistema de gestión de acceso desde la dirección 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"
}'
A continuación se muestra un ejemplo del cuerpo de respuesta del punto final de riesgo de relleno:
{
    "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"
        }
    ]
}