Personalización de señales

Con App ID, se utilizan señales para identificar usuarios y para proteger los recursos. Puede optar por personalizar la información que el servicio inyecta en las señales. Al inyectar la información en tus tokens, está disponible para tu aplicación en tiempo de ejecución sin que tengas que configurar llamadas de red adicionales. Para obtener más información sobre las señales y sobre cómo se utilizan en App ID, consulte Gestión de señales.

Mediante la personalización de la configuración de la señal, puede garantizar que las necesidades de seguridad y experiencia de usuario se cumplen. Sin embargo, si alguna vez una señal se ve comprometida, un usuario malintencionado dispondrá de más información o de más tiempo para afectar a la aplicación. Asegúrese de que entiende las implicaciones de seguridad de las personalizaciones que desea realizar antes de hacerlas.

Descripción de la correlación de reclamaciones personalizadas

Una reclamación es una declaración que una entidad hace sobre sí misma o en nombre de otra persona. Por ejemplo, si ha iniciado sesión en una aplicación utilizando un proveedor de identidad, el proveedor enviaría a la aplicación un grupo de reclamaciones o declaraciones sobre usted para que la app pueda agruparlas con información que ya conoce sobre usted. De esta forma, cuando inicie sesión, la app se configura con su información, tal y como la haya configurado.

¿Qué tipos de reclamaciones puedo definir?

Las reclamaciones que App ID proporciona forman parte de varias categorías que se diferencian por su nivel de personalización.

Reclamaciones normalizadas
En cada señal de identidad, hay un conjunto de reclamaciones que App ID reconoce como normalizadas. Cuando están disponibles, las reclamaciones se correlacionan directamente de forma predeterminada entre el proveedor de identidad y la señal. Las reclamaciones no se pueden omitir de forma explícita, pero se pueden modificar en la señal con reclamaciones personalizadas. Entre las reclamaciones se incluye name, email, picture y locale.
Reclamaciones restringidas
Las reclamaciones restringidas son aquellas que tienen una capacidad de personalización limitada y que no pueden modificar las correlaciones personalizadas. Para una señal de acceso, scope es la única reclamación restringida. Aunque se puede modificar, se puede ampliar con su propio ámbito. Cuando el ámbito se correlaciona con una señal de acceso, el valor debe ser una serie y no puede tener el prefijo appid_; de lo contrario, se pasa por alto. En las señales de identidad, las reclamaciones identities y oauth_clients no se pueden modificar ni alterar temporalmente.
Reclamaciones registradas
Las reclamaciones registradas se encuentran en las señales de acceso y de identidad y están definidas por App ID. Las correlaciones personalizadas no las pueden modificar. El servicio pasa por alto estas reclamaciones, que incluyen iss, aud, sub, iat, exp, amr y tenant.

El hecho de definir una reclamación para la señal no cambia ni elimina el atributo. Cambia la información que se encuentra en la señal en tiempo de ejecución.

¿Cómo se correlacionan las reclamaciones con las señales?

Cada correlación está definida por un objeto de origen de datos y una clave que se utiliza para recuperar la reclamación. Puede inyectar un máximo de 100 reclamaciones en cada señal si la carga útil máxima sigue siendo inferior a 100 KB. Si desea utilizar reclamaciones anidadas, puede incluirlas utilizando la sintaxis de punto. Por ejemplo, nested.attribute.

Las reclamaciones se establecen para cada señal por separado y se aplican secuencialmente, tal como se muestra en el ejemplo siguiente.

{
  "accessTokenClaims": [
    {
      "source": "saml",
      "sourceClaim": "moderator"
    },
    {
      "source": "saml",
      "sourceClaim": "viewer",
      "destinationClaim": "reader"
    }
  ],
  "idTokenClaims": [
    {
      "source": "saml",
      "sourceClaim": "attributes.uid"
    },
    {
      "source": "saml",
      "sourceClaim": "Name",
      "destinationClaim": "firstName"
    },
    {
      "source": "saml",
      "sourceClaim": "Country"
    }
  ]
}
Explicación de las variables de la siniestralidad
Objecto Descripción
source Define el origen de la reclamación. Entre las opciones se incluye: saml, cloud_directory, facebook, google, appid_custom y attributes.
sourceClaim Define la reclamación proporcionada por el origen. Puede hacer referencia a la información de usuario del proveedor de identidad o a los atributos personalizados de App ID del usuario.
destinationClaim Opcional: Define el atributo personalizado que puede sobrescribir la reclamación actual en la señal.

Configuración de señales

Con la API, puede personalizar la información que se devuelve en las señales de App ID.

Si desea configurar la duración de la señal, puede realizar los cambios rápidamente a través del panel de control del servicio. Para obtener más información, consulte Gestión de la autenticación.

  1. En el terminal, ejecute el mandato siguiente para obtener una clave de API.

    ibmcloud iam api-key-create NAME [-d DESCRIPTION] [-f, --file FILE]
    
    Comprender las opciones del comando de creación de una clave API
    Opción Descripción
    NAME El nombre que desee dar a la clave. Por ejemplo, myKey.
    DESCRIPTION Una descripción de la clave o de su uso. Por ejemplo, "This is my App ID API key".
    FILE La ubicación donde desea almacenar la clave. Por ejemplo, key_file.
  2. Obtención de una señal de IAM utilizando la clave de API que ha obtenido en el paso anterior.

    curl -k -X POST "https://iam.cloud.ibm.com/identity/token" \
    --header "Content-Type: application/x-www-form-urlencoded" \
    --header "Accept: application/json" \
    --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" \
    --data-urlencode "apikey=<apiKey>"
    
  3. Obtenga el ID de arrendatario correspondiente a la instancia del servicio. Encontrará el valor en las credenciales del servicio o de la aplicación.

  4. Haga una solicitud PUT al punto final /config/tokens con la configuración de la señal.

    curl -X PUT "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/tokens" \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer <IAMToken>" \
    -d '{
       "access": {
             "expires_in": 3600
       },
       "refresh": {
             "enabled": true,
             "expires_in": 2592001
       },
       "anonymousAccess": {
             "enabled": false
       },
       "accessTokenClaims": [
             {
             "source": "roles"
             },
             {
             "source": "saml",
             "sourceClaim": "name_id",
             "destinationClaim": "id"
             }
       ],
       "idTokenClaims": [
             {
             "source": "saml",
             "sourceClaim": "attributes.uid"
             }
       ]
    }'
    
    Comprender la configuración de los tokens
    Variable Descripción
    access: expires_in El intervalo de tiempo durante el cual son válidas las señales de acceso. Cuanto menor sea el valor, dispondrá de más protección cuando le roben la señal. El valor se proporciona en segundos y puede ser cualquier número entero comprendido entre 300 y 86400. El valor predeterminado es 3600.
    refresh: expires_in El intervalo de tiempo durante el cual son válidas las señales de renovación. Cuanto menor sea el valor, dispondrá de más protección cuando le roben la señal. El valor se proporciona en segundos y puede ser cualquier número entero comprendido entre 86400 y 7776000. El valor predeterminado es 2592000 (30 días).
    anonymousAccess El intervalo de tiempo durante el cual es válida una señal anónima. Las señales anónimas se asignan a los usuarios en el momento en que empiezan a interactuar con la app. Cuando un usuario inicia sesión, la información de la señal anónima se transfiere a la señal asociada con el usuario. El valor se proporciona en segundos y puede ser cualquier número entero comprendido entre 86400 y 7776000. El valor predeterminado es 2592000 (30 días).
    accessTokenClaims Una matriz que contiene los objetos que se crean cuando las reclamaciones relacionadas con las señales de acceso se correlacionan. Tal vez desee incluir información sobre los roles o los atributos específicos que devuelve el proveedor de identidad del usuario que haya elegido. Nota: si ya está utilizando una reclamación personalizada con el título "roles" del proveedor de identidades, asegúrese de utilizar una reclamación de destino para ver ambos valores.
    idTokenClaims Una matriz que contiene la información que está presente en las señales cuando se correlacionan las reclamaciones con las señales de identidad. En función de su configuración, tal vez opte porque los "roles" estén en la señal de identidad.

    Debe definir la duración de la señal en cada solicitud que realice. Si no se define un valor, se utiliza el valor predeterminado. Cada solicitud de personalización modifica la configurada anteriormente. Tenga en cuenta que las especificaciones de configuración de duración son diferentes en la API que en el panel de control del servicio.

  5. Después de devolver la señal y decodificarla, verá un resultado similar al del ejemplo siguiente:

    {
       "sub" : "1234567890",
       "name" : "John Doe",
       "exp" : 1564566,
       "roles" : ["admin", "manager"],
       "id": "<nameIDFromSaml>",
       "attributes.uid": "<uidFromSaml>"
       ...
    }