Saltar al contenido

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

9 minutos de lectura
0

Quiero resolver los errores que reciben los usuarios cuando se federan en Amazon Cognito con SAML 2.0.

Resolución

Revisión de las respuestas de SAML

En tu navegador, revisa la respuesta de SAML que tu proveedor de identidades (IdP) envió a Amazon Cognito.

Nota: El elementoSAMLResponse contiene una respuesta codificada en base64. Si ves caracteres de porcentaje (%) en la carga útil, significa que la respuesta está codificada en URL y en base64. En este caso, realiza la decodificación de URL en el valor de SAMLResponse y, a continuación, aplica la decodificación en base64.

Comprobación de las asignaciones de atributos

«The attribute is required»

Recibes el siguiente mensaje de error:

«Invalid SAML response received: Invalid user attributes: <attribute_name>: The attribute is required»

Para resolver este problema, sigue estos pasos:

  1. Abre la consola de Amazon Cognito.
  2. En el panel de navegación, selecciona Grupos de usuarios y, a continuación, selecciona tu grupo de usuarios.
  3. En Experiencia de registro, anota los atributos obligatorios que has configurado.
  4. Comprueba si has configurado las asignaciones de atributos para tu grupo de usuarios. Si no has asignado los atributos, especifica las asignaciones de atributos.
  5. Recupera la respuesta de SAML en tu navegador.
  6. En el campo AttributeStatement, verifica si el IdP incluye los atributos obligatorios.
  7. En la configuración de asignación de atributos de tu IdP, confirma que has configurado tu IdP para enviar los atributos necesarios con las asignaciones correctas.

Nota: Tu IdP puede usar nombres simples para las asignaciones de atributos, como una dirección de correo electrónico o un formato de URL. Un ejemplo de nombre de atributo con formato URL es http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress.

«Required attribute cannot be deleted»

Recibes el siguiente mensaje de error:

«Invalid SAML response received: Invalid user attributes: <attribute_name>: Required attribute cannot be deleted»

Este error se produce cuando el IdP establece un atributo obligatorio en nulo, elimina un atributo obligatorio o elimina una asignación de atributos tras la creación del usuario.

Para resolver este problema, asigna todos los atributos necesarios y configura el IdP para que envíe los valores correctos para los atributos.

Para obtener más información, consulta Cosas que debes saber acerca de las asignaciones.

Comprobar si hay atributos inmutables

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Recibes el siguiente mensaje de error:

«Invalid SAML response received: Invalid user attributes: <attribute_name>: Attribute cannot be updated»

Este error se produce cuando el IdP pasa un atributo que está asignado a un atributo inmutable de Amazon Cognito. Después de crear un grupo de usuarios, no puedes cambiar la mutabilidad de los atributos.

Para resolver este problema, sigue estos pasos:

  1. Ejecuta el siguiente comando describe-user-pool:
    aws cognito-idp describe-user-pool --user-pool-id USER-POOL-ID --query 'UserPool.SchemaAttributes[?Mutable==`false`].Name'
    Nota: Sustituye USER-POOL-ID por el ID de tu grupo de usuarios.
  2. En el resultado del comando, anota todos los atributos inmutables.
  3. Abre la consola de Amazon Cognito.
  4. En las asignaciones de atributos de SAML de tu IdP, comprueba si tus atributos de SAML se asignan a los atributos inmutables de Amazon Cognito. Si un atributo de SAML se asigna a un atributo inmutable, elimina la asignación.
    Nota: Si debes asignar el atributo de SAML, asígnalo a un atributo mutable existente. También puedes crear un atributo mutable personalizado que puedas asignar al atributo de SAML.

Si necesitas un atributo asignado, crea un nuevo grupo de usuarios con la configuración de mutabilidad correcta e importa tus usuarios al nuevo grupo de usuarios.

Comparación de los valores entre la respuesta de SAML y el archivo XML de metadatos del IdP

Recibes el siguiente mensaje de error:

«Invalid SAML response received: SAML Response signature is invalid»

Este error se produce cuando tu IdP actualiza su certificado de firma de SAML. La actualización crea una discordancia entre los valores de X509Certificate de la respuesta de SAML y el archivo XML de metadatos del IdP.

Para resolver este problema, sigue estos pasos:

  1. Descarga el archivo de metadatos más reciente en la página de configuración de la aplicación de tu IdP.
    Nota: Si tu IdP ofrece metadatos de SAML a través de una URL pública, puedes anotar la URL del documento de metadatos e introducir la URL pública.
  2. Abre la consola de Amazon Cognito.
  3. En los ajustes de configuración de tu IdP de SAML, sustituye el archivo de metadatos existente por el nuevo archivo de metadatos.

Comprobación del ID y el URN de la entidad

Recibes uno de los siguientes mensajes de error:

«Invalid SAML response received: Audience restriction in SAML Assertion does not allow it for urn:amazon:cognito:sp:xxxxxxxx»

Alternativa:

«Invalid SAML response received: Application with identifier 'urn:amazon:cognito:sp:xxxxxxxx' was not found»

Estos errores se producen cuando configuras un ID de entidad incorrecto en tu IdP o cuando utilizas el nombre uniforme de recursos (URN) de otro grupo de usuarios.

Para resolver este problema, sigue estos pasos:

  1. Abre la consola de Amazon Cognito.
  2. En el panel de navegación, elige Grupos de usuarios y, a continuación, selecciona el grupo de usuarios que deseas configurar para la integración de SAML.
  3. En el panel de navegación, elige Descripción general y, a continuación, anota el ID de tu grupo de usuarios.
  4. En la configuración de la aplicación SAML del IdP, configura el ID de la entidad en el formato urn:amazon:cognito:sp:USER-POOL-ID.
    Nota: Sustituye USER-POOL-ID por el ID de tu grupo de usuarios de Amazon Cognito.

Comprobación de la configuración de la URL del consumidor de aserciones (ACS) del IdP

Recibes el siguiente mensaje de error:

«An error was encountered with the requested page»

Aparece este error en la página de inicio de sesión administrado de Amazon Cognito cuando configuras incorrectamente la URL del servicio de aserción al consumidor (ACS) del IdP. Amazon Cognito solo admite el enlace POST para el punto de enlace. Tu IdP debe enviar las respuestas de SAML de la solicitud POST al punto de enlace. Si configuras la URL de forma incorrecta en la aplicación de tu IdP, el IdP enviará la respuesta de SAML a un punto de enlace incorrecto.

Para resolver este problema, configura la aplicación de tu IdP con el formato de URL de ACS correcto.

Un formato de ejemplo para un dominio de grupo de usuarios predeterminado de Amazon Cognito es https://YOUR-USER-POOL-DOMAIN.auth.REGION.amazoncognito.com/saml2/idpresponse.

Un ejemplo de formato para un dominio de grupo de usuarios personalizado es https://YOUR-USER-POOL-DOMAIN/saml2/idpresponse.

Nota: Sustituye YOUR-USER-POOL-DOMAIN por el dominio de tu grupo de usuarios.

Confirmación del tipo de inicio de sesión que admite el IdP

Recibes uno de los siguientes mensajes de error:

«An error was encountered with the requested page: Invalid relayState from identity provider»

Alternativa:

«An error was encountered with the requested page: Invalid samlResponse or relayState from identity provider»

Estos errores se producen tanto en los flujos de inicio de sesión SAML iniciados por el IdP como en los iniciados por el proveedor de servicios (iniciados por el SP) por los siguientes motivos:

  • El IdP estableció el parámetro RelayState en nulo en la respuesta de SAML a Amazon Cognito.
  • Utilizaste la misma aplicación de IdP con un grupo de usuarios diferente. Como resultado, la URL de ACS de la solicitud de SAML no coincide con la URL de ACS de la configuración de la aplicación de tu IdP.

Nota: Para los flujos de inicio de sesión de SAML iniciados por el SP, Amazon Cognito incluye un parámetro RelayState en la solicitud de autenticación dirigida a tu IdP. Tras la autenticación, tu IdP debe devolver el parámetro RelayState a Amazon Cognito. Para los flujos de inicio de sesión de SAML iniciados por un IdP, tu IdP debe incluir un parámetro RelayState con la aserción SAML en el punto de enlace /saml2/idpresponse.

Para resolver los problemas de RelayState, determina si tu IdP de SAML solo admite el inicio de sesión SAML iniciado por el SP o tanto el inicio de sesión SAML iniciado por el IdP como el iniciado por el SP.

Si tu IdP admite los flujos de inicio de sesión de SAML iniciados por el SP, inicia el flujo de autenticación desde Amazon Cognito para iniciar la solicitud de federación. Puedes usar el punto de enlace de inicio de sesión administrado /login que redirige a los usuarios al punto de enlace de inicio de sesión. O bien, utiliza el punto de enlace de redireccionamiento y autenticación /oauth2/authorize.

Si tu IdP admite los flujos de inicio de sesión de SAML iniciados por el IdP, configura tu IdP de SAML con el parámetro RelayState en el formato identity_provider=ID-PROVIDER-NAME&client_id=CLIENT-ID&redirect_uri=CALLBACK-URL&response_type=code&scope=openid+email+phone.

Nota: Sustituye ID-PROVIDER-NAME por el nombre de tu IdP de SAML. Además, sustituye CLIENT-ID por el ID de cliente de la aplicación para tu grupo de usuarios y CALLBACK-URL por la URL de devolución de llamada para el ID de cliente de la aplicación.

Para resolver los problemas de URL de ACS, sigue estos pasos:

  1. Crea un archivo HTTP Archive (HAR).
  2. En tu navegador, en la pestaña Red, busca la solicitud con una entrada saml?SamlRequest.
  3. Anota la SAMLRequest de los parámetros de la solicitud.
  4. Utiliza la herramienta de decodificación de SAML que prefieras para decodificar el valor de SAMLRequest.
  5. Compara la URL de ACS de la solicitud decodificada con la de tu configuración de IdP.

Si las URL son diferentes, actualiza la configuración de tu IdP para que coincida con la URL de ACS de la SAMLRequest. A continuación, inicia la solicitud de federación desde el grupo de usuarios correcto.

OFICIAL DE AWSActualizada hace 5 años