Asignación de atributos de IdP a perfiles y tokens - Amazon Cognito

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Asignación de atributos de IdP a perfiles y tokens

Los servicios de proveedores de identidad (IdP), incluido Amazon Cognito, suelen registrar más información sobre un usuario. Es posible que desee saber para qué empresa trabajan, cómo ponerse en contacto con ellos y otra información de identificación. Sin embargo, el formato que adoptan estos atributos varía de un proveedor a otro. Por ejemplo, configura tres IdPs de tres proveedores diferentes con tu grupo de usuarios y examina un ejemplo de SAML afirmación, identificador o userInfo carga útil de cada uno. Uno representará la dirección de correo electrónico del usuario comoemail, otro como emailaddress y el tercero como. http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

Una de las principales ventajas de la consolidación IdPs con un grupo de usuarios es la posibilidad de mapear la variedad de nombres de atributos en un esquema de un solo OIDC token con nombres de atributos compartidos, predecibles y consistentes. De esta forma, los desarrolladores no tendrán que mantener la lógica para procesar una variedad compleja de eventos de inicio de sesión único. Esta consolidación de formatos es el mapeo de atributos. La asignación de atributos del grupo de usuarios asigna los nombres de los atributos del IdP a los nombres de los atributos del grupo de usuarios correspondientes. Por ejemplo, puede configurar su grupo de usuarios para que escriba el valor de una notificación en el emailaddress atributo estándar del grupo de usuarios. email

Cada IdP del grupo de usuarios tiene un esquema de mapeo de atributos independiente. Para especificar las asignaciones de atributos para su IDP, configure un proveedor de identidades de grupos de usuarios en la consola de Amazon Cognito, en o en los grupos de usuarios. AWS SDK REST API

Cuestiones que debe saber acerca de los mapeos

Antes de empezar a configurar el mapeo de atributos de usuario, revise los siguientes detalles importantes.

  • Cuando un usuario federado se registra en su aplicación, debe haber una asignación para cada atributo del grupo de usuarios que su grupo de usuarios requiera. Por ejemplo, si el grupo de usuarios requiere un atributo email para iniciar sesión, asigne este atributo a su equivalente desde el IdP.

  • De forma predeterminada, las direcciones de correo electrónico mapeadas no se verifican. No se puede verificar una dirección de correo electrónico mapeada con un código único. En su lugar, asigne un atributo desde el IdP para obtener el estado de verificación. Por ejemplo, Google y la mayoría de los OIDC proveedores incluyen el email_verified atributo.

  • Puede asignar tokens de proveedor de identidades (IdP) a atributos personalizados en su grupo de usuarios. Los proveedores sociales presentan un token de acceso y OIDC los proveedores presentan un token de acceso e identificación. Para asignar un token, agregue un atributo personalizado con una longitud máxima de 2048 caracteres, otorgue al cliente de la aplicación acceso de escritura al atributo y asigne el access_token o el id_token desde el IdP al atributo personalizado.

  • Para cada atributo de grupo de usuarios asignado, la longitud máxima del valor de 2048 caracteres debe ser lo suficientemente amplia para el valor que Amazon Cognito obtiene del IdP. De lo contrario, Amazon Cognito comunica un error cuando los usuarios inician sesión en la aplicación. Amazon Cognito no admite la asignación de tokens de IdP a atributos personalizados cuando los tokens tienen más de 2048 caracteres.

  • Amazon Cognito deriva el username atributo del perfil de un usuario federado a partir de notificaciones específicas que aprueba su IdP federado, como se muestra en la siguiente tabla. Amazon Cognito antepone este valor de atributo al nombre de su IdP, por ejemplo. MyOIDCIdP_[sub] Si desea que sus usuarios federados tengan un atributo que coincida exactamente con un atributo de su directorio de usuarios externo, asigne ese atributo a un atributo de inicio de sesión de Amazon Cognito, como. preferred_username

    Proveedor de identidad Atributo de origen de username
    Facebook id
    Google sub
    Login with Amazon user_id
    Inicio de sesión con Apple sub
    SAMLproveedores NameID
    proveedores de OpenID Connect () OIDC sub
  • Cuando un grupo de usuarios no distingue entre mayúsculas y minúsculas, Amazon Cognito convierte el atributo fuente del nombre de usuario a minúsculas en los nombres de usuario generados automáticamente por los usuarios federados. El siguiente es un ejemplo de nombre de usuario para un grupo de usuarios que distingue entre mayúsculas y minúsculas:. MySAML_TestUser@example.com El siguiente es el mismo nombre de usuario para un grupo de usuarios que no distingue entre mayúsculas y minúsculas:. MySAML_testuser@example.com

    En los grupos de usuarios que no distinguen entre mayúsculas y minúsculas, los activadores de Lambda que procesan el nombre de usuario deben tener en cuenta esta modificación en cualquier afirmación que mezcle mayúsculas y minúsculas de los atributos de origen del nombre de usuario. Para vincular su IdP a un grupo de usuarios que tenga una configuración de distinción entre mayúsculas y minúsculas diferente a la del grupo de usuarios actual, cree un grupo de usuarios nuevo.

  • Amazon Cognito debe poder actualizar los atributos del grupo de usuarios mapeados cuando los usuarios inician sesión en la aplicación. Cuando un usuario inicia sesión a través de un IdP, Amazon Cognito actualiza los atributos asignados con la información más reciente del IdP. Amazon Cognito actualiza cada atributo mapeado incluso si su valor actual ya coincide con la información más reciente. Para asegurarse de que Amazon Cognito pueda actualizar los atributos, consulte los siguientes requisitos:

    • Todos los atributos personalizados del grupo de usuarios que asigne desde su IdP deben ser mutables. Puede actualizar los atributos personalizados mutables en cualquier momento. Por el contrario, solo puede establecer un valor para el atributo personalizado inmutable de un usuario cuando cree por primera vez el perfil de usuario. Para crear un atributo personalizado mutable en la consola de Amazon Cognito, active la casilla de verificación Mutable del atributo que agregue al seleccionar Add custom attributes (Añadir atributos personalizados) en la pestaña Sign-up experience (Experiencia de registro). O bien, si crea su grupo de usuarios mediante la CreateUserPoolAPIoperación, puede establecer el Mutable parámetro para cada uno de estos atributos en. true Si su IDP envía un valor para un atributo inmutable asignado, Amazon Cognito devuelve un error y se produce un error al iniciar sesión.

    • En la configuración del cliente de la aplicación, los atributos asignados deben ser de escritura. Puede definir los atributos que se pueden escribir en la página App clients (Clientes de aplicaciones) en la consola de Amazon Cognito. O bien, si crea el cliente de la aplicación mediante la CreateUserPoolClientAPIoperación, puede añadir estos atributos a la matriz. WriteAttributes Si su IdP envía un valor para un atributo mapeado que no se puede escribir, Amazon Cognito no establece el valor del atributo y procede a la autenticación.

  • Cuando los atributos del IdP contienen varios valores, Amazon Cognito aplana todos los valores en una sola cadena delimitada por comas URL y codifica mediante formulario los valores que contienen caracteres no alfanuméricos (excepto los caracteres '', ',' y . ''). - * _ Debe descodificar y analizar los valores individuales antes de usarlos en la aplicación.

Especificación de asignaciones de atributos del proveedor de identidad para su grupo de usuarios (AWS Management Console)

Puede usarlo AWS Management Console para especificar las asignaciones de atributos para el IdP de su grupo de usuarios.

nota

Amazon Cognito mapeará las notificaciones entrantes a los atributos del grupo de usuarios solo si las notificaciones existen en el token de entrada. Si una notificación asignada anteriormente ya no existe en el token de entrada, no cambiará ni se eliminará. Si la aplicación requiere la asignación de notificaciones eliminadas, puede usar el desencadenador de Lambda de autenticación previa para eliminar el atributo personalizado durante la autenticación y permitir que estos atributos vuelvan a rellenarse desde el token de entrada.

Para especificar una asignación de atributo de IdP social
  1. Inicie sesión en la consola de Amazon Cognito. Si se le solicita, introduzca sus credenciales. AWS

  2. En el panel de navegación, elija User Pools (Grupos de usuarios) y elija el grupo de usuarios que desea editar.

  3. Elija la pestaña Sign-in experience (Experiencia de inicio de sesión) y localice Federated sign-in (Inicio de sesión federado).

  4. Elija Add an identity provider (Agregar un proveedor de identidad), o elija el IdP de Facebook, Google, Amazon o Apple que haya configurado. Localice Attribute mapping (Asignación de atributos) y elija Edit (Editar).

    Para obtener más información acerca de cómo agregar un IdP social, consulte Usar proveedores de identidad social con un grupo de usuarios.

  5. Para cada atributo que necesite asignar, complete los pasos siguientes:

    1. Seleccione un atributo de la columna User pool attribute (Atributo de grupo de usuarios). Este es el atributo que se asigna al perfil de usuario de su grupo de usuarios. Los atributos personalizados se enumeran después de los atributos estándar.

    2. Seleccione un atributo del <provider> columna de atributos. Este será el atributo que se pasa desde el directorio de proveedores. Los atributos conocidos del proveedor social se proporcionan en una lista desplegable.

    3. Para asignar atributos adicionales entre su IdP y Amazon Cognito, elija Add another attribute (Agregar otro atributo).

  6. Elija Guardar cambios.

Para especificar un mapeo SAML de atributos del proveedor
  1. Inicie sesión en la consola de Amazon Cognito. Si se le solicita, introduzca sus AWS credenciales.

  2. En el panel de navegación, elija User Pools (Grupos de usuarios) y elija el grupo de usuarios que desea editar.

  3. Elija la pestaña Sign-in experience (Experiencia de inicio de sesión) y localice Federated sign-in (Inicio de sesión federado).

  4. Elija Agregar un proveedor de identidad o elija el SAML IdP que ha configurado. Localice Attribute mapping (Asignación de atributos) y elija Edit (Editar). Para obtener más información sobre cómo agregar un SAML IdP, consulte. Uso de proveedores de SAML identidad con un grupo de usuarios

  5. Para cada atributo que necesite asignar, complete los pasos siguientes:

    1. Seleccione un atributo de la columna User pool attribute (Atributo de grupo de usuarios). Este es el atributo que se asigna al perfil de usuario de su grupo de usuarios. Los atributos personalizados se enumeran después de los atributos estándar.

    2. Seleccione un atributo de la columna de SAMLatributos. Este será el atributo que se pasa desde el directorio de proveedores.

      Su IdP puede ofrecer ejemplos de SAML afirmaciones como referencia. Algunas IdPs utilizan nombres sencillos, como, por ejemploemail, mientras que otras utilizan nombres de atributos URL con formato similar a los siguientes:

      http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
    3. Para asignar atributos adicionales entre su IdP y Amazon Cognito, elija Add another attribute (Agregar otro atributo).

  6. Elija Guardar cambios.

Especificar las asignaciones de atributos de los proveedores de identidad para su grupo de usuarios (y)AWS CLIAWS API

El siguiente cuerpo de la solicitud CreateIdentityProvidercorresponde o UpdateIdentityProviderasigna los atributos emailaddress «MyIdP» del SAML proveedor y phone a los atributos del grupo de usuariosemail, y birthdatephone_number, en ese orden. birthdate Se trata del cuerpo completo de la solicitud para un proveedor de la SAML versión 2.0; el cuerpo de la solicitud variará según el tipo de IDP y los detalles específicos. La asignación de atributos está en el parámetro. AttributeMapping

{ "AttributeMapping": { "email" : "emailaddress", "birthdate" : "birthdate", "phone_number" : "phone" }, "IdpIdentifiers": [ "IdP1", "pdxsaml" ], "ProviderDetails": { "IDPInit": "true", "IDPSignout": "true", "EncryptedResponses" : "true", "MetadataURL": "https://auth.example.com/sso/saml/metadata", "RequestSigningAlgorithm": "rsa-sha256" }, "ProviderName": "MyIdP", "ProviderType": "SAML", "UserPoolId": "us-west-2_EXAMPLE" }

Utilice los siguientes comandos para especificar asignaciones de atributos del IdP para su grupo de usuarios.

Para especificar asignaciones de atributos en el momento de crear el proveedor
  • AWS CLI: aws cognito-idp create-identity-provider

    Ejemplo con archivo de metadatos: aws cognito-idp create-identity-provider --user-pool-id <user_pool_id> --provider-name=SAML_provider_1 --provider-type SAML --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

    Donde details.json contiene:

    { "MetadataFile": "<SAML metadata XML>" }
    nota

    Si el archivo de <SAML metadata XML> si contiene comillas ("), deben estar ocultas (\").

    Ejemplo con metadatosURL:

    aws cognito-idp create-identity-provider \ --user-pool-id us-east-1_EXAMPLE \ --provider-name=SAML_provider_1 \ --provider-type SAML \ --provider-details MetadataURL=https://myidp.example.com/saml/metadata \ --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
  • API/SDK: CreateIdentityProvider

Para especificar asignaciones de atributo de un IdP existente
  • AWS CLI: aws cognito-idp update-identity-provider

    Ejemplo: aws cognito-idp update-identity-provider --user-pool-id <user_pool_id> --provider-name <provider_name> --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

  • API/SDK: UpdateIdentityProvider

Para obtener información sobre la asignación de atributos para un IdP específico
  • AWS CLI: aws cognito-idp describe-identity-provider

    Ejemplo: aws cognito-idp describe-identity-provider --user-pool-id <user_pool_id> --provider-name <provider_name>

  • API/SDK: DescribeIdentityProvider