Configuración de un proveedor SAML como IdP de grupo de identidades - 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.

Configuración de un proveedor SAML como IdP de grupo de identidades

Con los grupos de identidades de Amazon Cognito, puede autenticar a los usuarios con proveedores de identidades (IdP) mediante SAML 2.0. Puede utilizar un IdP que admita el lenguaje SAML con Amazon Cognito para proporcionar un flujo de incorporación sencillo a sus usuarios. El IdP compatible con SAML especifica los roles de IAM que los usuarios pueden asumir. De esta forma, distintos usuarios pueden recibir distintos conjuntos de permisos.

Configuración de un grupo de identidades para un IdP SAML

En los pasos siguientes se describe cómo configurar su grupo de identidades para utilizar un IdP SAML.

nota

A fin de poder configurar un grupo de identidades para que admita un proveedor SAML, primero tiene que configurar el IdP SAML en la consola de IAM. Para obtener más información, consulte Integración de proveedores de soluciones SAML externos con AWS en la guía del usuario de IAM.

Para agregar un proveedor de identidades (IdP) de SAML
  1. Elija Grupos de identidades en la consola de Amazon Cognito. Seleccione un grupo de identidades.

  2. Elija la pestaña Acceso de usuario.

  3. Seleccione Agregar proveedor de identidades.

  4. Elija SAML.

  5. Elija un proveedor de identidades de SAML entre los IdP de IAM que tiene la Cuenta de AWS. Si desea agregar un nuevo proveedor de SAML, elija Crear nuevo proveedor para navegar hasta la consola de IAM.

  6. Para establecer el rol que Amazon Cognito solicita cuando emite credenciales a los usuarios que se han autenticado con este proveedor, configure Configuración del rol.

    1. Puede asignar a los usuarios de ese IdP el Rol predeterminado que configuró al configurar el Rol autenticado o puede Elegir el rol con reglas.

      1. Si eligió Elegir rol con reglas, ingrese la Reclamación de origen de la autenticación del usuario, el Operador con el que desea comparar la afirmación, el Valor que hará que coincida con esta elección de rol y el Rol que desea asignar cuando la Asignación del rol coincida. Seleccione Agregar otra para crear una regla adicional en función de una condición diferente.

      2. Elija una Resolución de rol. Cuando las reclamaciones del usuario no coinciden con las reglas, puede denegar las credenciales o emitir credenciales para el Rol autenticado.

  7. Para cambiar las etiquetas de la entidad principal que Amazon Cognito asigna cuando emite credenciales a los usuarios que se han autenticado con este proveedor, configure Atributos para el control de acceso.

    1. Para no aplicar ninguna etiqueta de entidad principal, elija Inactivo.

    2. Para aplicar etiquetas de entidades principales en función de las reclamaciones sub y aud, elija Usar mapeos predeterminados.

    3. Para crear su propio esquema personalizado de atributos para las etiquetas de la entidades principales, elija Usar mapeos personalizados. A continuación, ingrese una Clave de etiqueta que desee obtener de cada Reclamación que desee representar en una etiqueta.

  8. Seleccione Guardar cambios.

Configuración del IdP SAML

Después de crear el proveedor SAML, configure su IdP SAML para añadir una relación de confianza entre el IdP y AWS. Muchos IdP permiten especificar una URL en la que el IdP pueda leer un documento XML que contiene información sobre la parte que confía y certificados. Para AWS, puede utilizar https://signin.aws.amazon.com/static/saml-metadata.xml. El siguiente paso consiste en configurar la respuesta de aserción de SAML del IdP para rellenar las reclamaciones que necesita AWS. Para obtener más información sobre la configuración de notificaciones, consulte Configuración de aserciones SAML para la respuesta de autenticación.

Cuando el IdP de SAML incluye más de un certificado de firma en los metadatos de SAML, al iniciar sesión, el grupo de usuarios determina que la afirmación de SAML es válida si coincide con algún certificado de los metadatos de SAML.

Personalización de un rol de usuario con SAML

Al usar SAML con Identidad de Amazon Cognito se puede personalizar el rol para el usuario final. Amazon Cognito solo admite el flujo mejorado con el IdP basado en SAML. Para que el grupo de identidades utilice un IdP basado en SAML, no es necesario especificar un rol autenticado o sin autenticar. El atributo https://aws.amazon.com/SAML/Attributes/Role de la notificación especifica uno o varios pares compuestos por un ARN de proveedor y un ARN de rol, y delimitado con comas. Estos son los roles que el usuario puede asumir. El IdP SAML se puede configurar para rellenar los atributos de rol en función de la información de atributo de usuario que el IdP tiene disponible. Si la aserción SAML recibe varios roles, rellene el parámetro customRoleArn opcional debe al llamar a getCredentialsForIdentity. El usuario asume este customRoleArn si el rol coincide con uno de la reclamación de la aserción SAML.

Autenticación de usuarios con un IdP SAML

Para federarse con el IdP basado en SAML, determine la URL en la que el usuario comienza a iniciar sesión. La federación AWS utiliza el inicio de sesión iniciado por el IdP. En AD FS 2.0, la URL adopta la forma https://<fqdn>/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices.

A fin de agregar compatibilidad para el IdP SAML en Amazon Cognito, primero autentique a los usuarios con el proveedor de identidad SAML a partir de su aplicación de iOS o Android. El código que utiliza para integrar y autenticar con el IdP SAML es específico de los proveedores SAML. Una vez que autentique al usuario, puede proporcionar la aserción SAML resultante a Identidad de Amazon Cognito mediante las API de Amazon Cognito.

No puede repetir ni reproducir una aserción de SAML en la asignación de Logins de la solicitud de API de grupo de identidades. Una aserción de SAML reproducida tiene un ID de aserción que duplica el ID de una solicitud de API anterior. Las operaciones de la API que pueden aceptar una aserción de SAML en la asignación de Logins incluyen GetId, GetCredentialsForIdentity, GetOpenIdToken y GetOpenIDTokenForDeveloperIdentity. Puede reproducir un ID de aserción de SAML una vez por solicitud de API en un flujo de autenticación de grupo de identidades. Por ejemplo, puede proporcionar la misma aserción de SAML en una solicitud GetId y en una solicitud GetCredentialsForIdentity posterior, pero no en una segunda solicitud GetId.

Android

Si utiliza el SDK para Android, puede rellenar la asignación de inicios de sesión con la aserción SAML como se indica a continuación.

Map logins = new HashMap(); logins.put("arn:aws:iam::aws account id:saml-provider/name", "base64 encoded assertion response"); // Now this should be set to CognitoCachingCredentialsProvider object. CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(context, identity pool id, region); credentialsProvider.setLogins(logins); // If SAML assertion contains multiple roles, resolve the role by setting the custom role credentialsProvider.setCustomRoleArn("arn:aws:iam::aws account id:role/customRoleName"); // This should trigger a call to the Amazon Cognito service to get the credentials. credentialsProvider.getCredentials();

iOS

Si utiliza el SDK de iOS puede proporcionar la aserción SAML en AWSIdentityProviderManager como se indica a continuación.

- (AWSTask<NSDictionary<NSString*,NSString*> *> *) logins { //this is hardcoded for simplicity, normally you would asynchronously go to your SAML provider //get the assertion and return the logins map using a AWSTaskCompletionSource return [AWSTask taskWithResult:@{@"arn:aws:iam::aws account id:saml-provider/name":@"base64 encoded assertion response"}]; } // If SAML assertion contains multiple roles, resolve the role by setting the custom role. // Implementing this is optional if there is only one role. - (NSString *)customRoleArn { return @"arn:aws:iam::accountId:role/customRoleName"; }