¿Cómo soluciono los errores de respuesta no válida de SAML que pueden recibir los usuarios al federarse en Amazon Cognito?

12 minutos de lectura
0

Necesito solucionar los errores que los usuarios pueden encontrar al federarse en Amazon Cognito con el Lenguaje de marcado de aserción de seguridad 2.0 (SAML 2.0).

Resolución

Amazon Cognito admite la autenticación con proveedores de identidades (IdP) y SAML 2.0. Los usuarios pueden encontrar errores comunes al federarse en Amazon Cognito mediante SAML.

Nota: En todo el proceso, sustituya <attribute_name> por el atributo de usuario de su escenario de error.

Ver las respuestas de SAML

Para resolver errores comunes de federación de SAML, consulte la respuesta de SAML enviada desde el IdP al grupo de usuarios de Amazon Cognito. Para obtener instrucciones sobre cómo capturar y decodificar la respuesta de SAML, consulte Visualización de una respuesta de SAML en su navegador.

Nota: El elementoSAMLResponse contiene la solicitud codificada en base64. Una carga útil con caracteres de % indica que la carga está codificada en URL además de en base64. Realice la decodificación de URL en el valor de SAMLResponse antes de enviarlo para su decodificación en base64.

Resolver errores de respuesta de SAML no válidas

«Se recibió una respuesta de SAML no válida: Atributos de usuario no válidos <attribute_name>: El atributo es obligatorio».

Este error se produce cuando un grupo de usuarios está configurado con los atributos obligatorios, pero el IdP no pasa notificaciones para los atributos obligatorios. Este error también se produce cuando la asignación de atributos no está disponible para los atributos obligatorios.

Siga estos pasos para resolver el error:

1.    Abra la consola de Amazon Cognito.

2.    Seleccione su grupo de usuarios.

3.    Revise la información sobre el grupo de usuarios. Tenga en cuenta los atributos obligatorios configurados en Experiencia de inscripción.

4.    Recupere y revise la respuesta de SAML en su navegador.

5.    Compruebe si el IdP pasa todas las notificaciones de los atributos obligatorios en el campo AttributeStatement de la respuesta. Si el IdP no envía todos los atributos requeridos en la respuesta de SAML, revise la configuración de asignación de atributos de su IdP. Asegúrese de que su IdP esté configurado para enviar las asignaciones correctas para los atributos obligatorios.

Nota: Su IdP podría ofrecer ejemplos de aserciones de SAML como referencia. Puede comprobar las aserciones para obtener más detalles sobre los atributos asignados del IdP. Algunos IdP utilizan nombres sencillos para las asignaciones de atributos, como una dirección de correo electrónico, mientras que otros utilizan nombres de atributos con formato de URL, como en este ejemplo:

http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

6.    Si la respuesta de SAML incluye los atributos obligatorios pero sigue apareciendo el mismo error, compruebe las asignaciones de atributos de Amazon Cognito. Si falta una asignación para un atributo obligatorio, añada una asignación a la notificación del atributo. Para obtener instrucciones sobre cómo añadir asignaciones de atributos, consulte Especificar las asignaciones de atributos de proveedores de identidades para su grupo de usuarios.

«Se recibió una respuesta de SAML no válida: Atributos de usuario no válidos <attribute_name>: No se puede eliminar el atributo obligatorio».

Este error se produce cuando se cambia un atributo obligatorio en el IdP para que el atributo obligatorio quede nulo o se elimine. Este error también se produce cuando se elimina una asignación después de crear un usuario.

Siga estos pasos para resolver el error:

1.    Abra la consola de Amazon Cognito.

2.    Seleccione su grupo de usuarios de Amazon Cognito.

3.    Revise la información sobre el grupo de usuarios. Tenga en cuenta los atributos obligatorios configurados.

4.    Recupere y revise la respuesta de SAML en su navegador.

5.    Compruebe si el IdP pasa todas las notificaciones de los atributos obligatorios en el campo AttributeStatement de la respuesta. Si el IdP no envía todos los atributos obligatorios en la respuesta de SAML, revise la configuración de asignación de atributos del IdP. Asegúrese de que su IdP esté configurado para enviar los atributos obligatorios con las asignaciones correctas.

6.    Si todos los atributos obligatorios se transfieren con valores válidos en la respuesta de SAML, compruebe las asignaciones de atributos del IdP. Asegúrese de que haya asignaciones para todos los atributos obligatorios.

Nota: Es posible que aparezca el siguiente error durante las solicitudes de federación después de eliminar el atributo obligatorio de un IdP o cambiarlo a nulo: «Se recibió una respuesta de SAML no válida: Atributos de usuario no válidos <attribute_name>: No se puede eliminar el atributo obligatorio». Este error también se produce cuando se elimina la asignación después de crear un usuario. Para resolver este error, siga los pasos anteriores para asegurarse de que existe la asignación para los atributos obligatorios. A continuación, se transfiere un valor correcto para los atributos obligatorios desde su IdP.

«Se recibió una respuesta de SAML no válida: Atributos de usuario no válidos <attribute_name>: No se puede actualizar el atributo».

Este error se produce cuando se transfiere un atributo desde el IdP, pero el atributo de Amazon Cognito asignado está configurado como inmutable ("mutable" : "false"). No puede cambiar la configuración de mutabilidad de un atributo después de crear un grupo de usuarios. Para resolver este error, debe eliminar la regla de asignación de atributos que asigna el atributo de SAML a un atributo inmutable.

Siga estos pasos para resolver el error:

1.    Ejecute el siguiente comando de la Interfaz de la línea de comandos de AWS (AWS CLI) y anote los atributos devueltos en la salida. Todos los atributos devueltos en la salida son inmutables.

Nota: Sustituya <userpool_id> por el ID de su grupo de usuarios.

aws cognito-idp describe-user-pool --user-pool-id <userpool_id> --query 'UserPool.SchemaAttributes[?Mutable==`false`].Name'

Nota: Si recibe errores al ejecutar los comandos de AWS CLI, asegúrese de utilizar la versión más reciente de AWS CLI.

2.    Abra la consola de Amazon Cognito.

3.    Revise las asignaciones de atributos de SAML para su proveedor.

4.    Compruebe si alguno de los atributos de SAML está asignado a los atributos de Amazon Cognito devueltos en la salida del comando. Si hay una asignación a un atributo inmutable, elimine esa asignación. Si necesita asignar ese atributo de SAML, asígnelo a cualquier atributo mutable existente. También puede crear un atributo mutable personalizado y asignar el atributo de SAML al atributo mutable personalizado.

No hay ninguna solución alternativa que pueda realizar en un grupo de usuarios existente para eliminar una asignación, ya que se requiere un atributo asignado. Debe crear un nuevo grupo de usuarios con la configuración de mutabilidad requerida y migrar los usuarios al nuevo grupo de usuarios.

«Se recibió una respuesta de SAML no válida: La firma de respuesta de SAML no es válida».

Este error se produce cuando el IdP cambia el certificado de firma de SAML. Para solucionar este problema, revise la respuesta de SAML que recibe cuando se federa en Amazon Cognito. Anote el valor indicado en el campo X509Certificate. Compare este valor de X509Certificate de la respuesta de SAML con el valor de X509Certificate del archivo XML de metadatos cargado en Amazon Cognito para la configuración del IdP. Si los valores son diferentes, significa que el certificado de firma de SAML utilizado por el IdP está actualizado.

Siga estos pasos para resolver el error:

1.    Vaya a la página de configuración de la aplicación de su IdP y, a continuación, busque el archivo de metadatos actualizado.

2.    Abra la consola de Amazon Cognito.

3.    Navegue hasta la configuración de su IdP de SAML.

4.    Sustituya el archivo de metadatos existente por el archivo de metadatos actualizado.
-o-
Si su IdP ofrece metadatos de SAML a través de una URL pública, copie la URL del documento de metadatos. Pegue esa URL pública en lugar de cargar un archivo de metadatos.

«Se recibió una respuesta de SAML no válida: La restricción de audiencia en la aserción de SAML no lo permite para urn:amazon:cognito:sp:xxxxxxxx».
-o-
«Se recibió una respuesta de SAML no válida: no se encontró la aplicación con el identificador 'urn:amazon:cognito:sp:xxxxxxxx'».

Nota: El mensaje de error varía según el IdP.

Este error se produce cuando configura incorrectamente su ID de entidad en su IdP. Este error también se produce cuando se utiliza el URN de otro grupo de usuarios como ID de entidad.

Siga estos pasos para resolver el error:

1.    Abra la consola de Amazon Cognito.

2.    Elija Grupos de usuarios y, a continuación, anote el ID de su grupo de usuarios.

3.    Vaya a la configuración de la aplicación de SAML del IdP y, a continuación, configure el ID de la entidad en el siguiente formato:

Nota: Sustituya <user_pool_id> por el ID de su grupo de usuarios de Amazon Cognito.

urn:amazon:cognito:sp:<user_pool_id>

«Se ha producido un error en la página solicitada».

Este error se produce en la página de la interfaz de usuario alojada de Amazon Cognito. Si este mensaje de error no va acompañado de ninguna otra declaración de error, indica que la URL del Servicio de consumidor de aserciones (ACS) de la aplicación está configurada incorrectamente. Su IdP usa la URL de ACS para enviar una respuesta de SAML a Amazon Cognito. La URL de ACS sigue este formato:

Nota: Sustituya <your_user_pool_domain> por el dominio de su grupo de usuarios.

https://<your_user_pool_domain>/saml2/idpresponse

Amazon Cognito solo admite el enlace POST para el punto de conexión. Su IdP debe enviar las respuestas de SAML de la solicitud POST al punto de conexión. Si configura esta URL de forma incorrecta en la aplicación de su IdP, el IdP enviará la respuesta de SAML a un punto de conexión incorrecto. Esto produce un error 400 y un error de federación.

Siga estos pasos para resolver el error:

1.    Vaya a la configuración de la aplicación de su IdP y configure la URL de ACS mediante uno de los siguientes formatos:

Dominio de Cognito:

https://<your_user_pool_domain>.auth.<region>.amazoncognito.com/saml2/idpresponse

Dominio personalizado:

https://<your_user_pool_domain>/saml2/idpresponse

«Se ha producido un error en la página solicitada: relayState del proveedor de identidades no válido».
-o-
«Se ha producido un error en la página solicitada: samlResponse o relayState del proveedor de identidades no válidos».

Este error se produce por los siguientes motivos:

  • El IdP establece el parámetro RelayState en nulo cuando se envía una respuesta de SAML a Amazon Cognito.
  • La URL de ACS de la solicitud de SAML no es la misma que la URL de ACS configurada en la aplicación del IdP.

Amazon Cognito genera un parámetro RelayState al reenviar una solicitud de autenticación a su IdP. El IdP debe devolver este parámetro RelayState a Amazon Cognito después de que se haya autenticado correctamente.

Durante la federación de SAML, un grupo de usuarios actúa como proveedor de servicios en nombre de la aplicación. Como proveedor de servicios, Amazon Cognito solo admite flujos de inicio de sesión único (SSO) iniciados por el proveedor de servicios. No se admiten los flujos iniciados por el IdP. Cuando se inicia una solicitud de federación desde su IdP, el atributo obligatorio del IdP se elimina o se cambia a nulo. El resultado es un error de federación que incluye el mensaje de error mencionado anteriormente.

Para resolver este error, inicie la solicitud de federación desde Amazon Cognito en lugar del IdP. Para iniciar la federación desde Amazon Cognito, siga uno de los siguientes pasos para iniciar el flujo de autenticación:

  • Redirija a los usuarios al punto de conexión /login para iniciar sesión. El punto de conexión /login carga la página de inicio de sesión y presenta las opciones de autenticación del cliente a los usuarios. Conéctese al punto de conexión /login cuando los usuarios necesiten marcar diferentes opciones para iniciar sesión en sus aplicaciones y que el sistema los redirija al IdP.
  • Envíe las solicitudes al punto de conexión /oauth2/authorize de Amazon Cognito. El punto de conexión /oauth2/authorize es un punto de conexión de redireccionamiento que admite dos destinos de redireccionamiento. Al incluir un parámetro identity_provider o idp_identifier en la URL, el usuario se redirige sin problemas a la página de inicio de sesión del IdP. Puede utilizar esta opción para omitir el diseño predeterminado de la interfaz de usuario alojada y para que se le redirija directamente a la página del IdP.

El error también se produce cuando la URL de ACS es diferente cuando una solicitud de federación para la misma aplicación de IdP proviene de un grupo de usuarios diferente. Siga estos pasos para investigar y resolver el error:

1.    Cuando se federe en Amazon Cognito, capture el archivo HTTP Archive (HAR).

2.    En su navegador, en la pestaña Red, busque la solicitud con una entrada saml?SamlRequest y, a continuación, abra la solicitud.

3.    Copie el valor de SAMLRequest proporcionado en los parámetros de la solicitud.

4.    Utilice la herramienta de decodificación de SAML que prefiera para decodificar el valor de SAMLRequest. A continuación, compruebe si la URL de ACS enviada en SAMLRequest es la misma que la que está configurada en la aplicación de su IdP.

El error se confirma cuando los valores de SAMLRequest son diferentes.

5.    Para resolver el error, compruebe la configuración de su IdP. Asegúrese de que la URL de ACS establecida en su aplicación sea la misma que la URL de ACS enviada en SAMLRequest.

La URL de ACS es diferente cuando se genera una solicitud de federación para la misma aplicación de IdP desde un grupo de usuarios diferente. Asegúrese de iniciar la solicitud de federación desde el grupo de usuarios correspondiente.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año