Resolución de problemas

¿No funciona? Errores SAML frecuentes

El mensaje de error depende de la herramienta, pero las causas son casi siempre las mismas. Encuentre la suya.

Consejo: pegue la respuesta SAML en el decodificador o use el SP de pruebas para ver exactamente qué comprobación falla.

«Invalid audience» / «Audience restriction»Audiencia

Causa probable. La aserción está destinada a un nombre de aplicación distinto del que espera la aplicación. La diferencia puede ser un solo carácter: barra final, http frente a https, URL frente a URN, mayúsculas.

¿Qué hacer? Compare el Entity ID declarado en el IdP con el de la aplicación (visible en sus metadatos) y haga que sean estrictamente idénticos.
«Incorrect ACS URL» / «Recipient» / «Destination»Destination, Recipient

Causa probable. La dirección a la que el IdP envía la respuesta no es exactamente la de la aplicación. Caso habitual: un proxy inverso convierte internamente la aplicación de https a http, o añade una ruta.

¿Qué hacer? Corrija la URL del ACS declarada en el IdP (cópiela de los metadatos de la aplicación). Revise también el ajuste de URL pública de la aplicación cuando está detrás de un proxy.
«Invalid signature» / «digest mismatch»Signature

Causa probable. El contenido cambió tras la firma, o un componente reformateó el XML por el camino (pasarela, antivirus web, copiar y pegar).

¿Qué hacer? Obtenga la respuesta en bruto (campo SAMLResponse) sin alterarla. Compruebe que la codificación base64 no esté rota por saltos de línea ni codificada dos veces.
«Unknown certificate» / «signature does not match any certificate»Firma

Causa probable. El certificado configurado en la aplicación no es el que firma. Muy a menudo, el IdP ha renovado su certificado y la aplicación conserva el antiguo.

¿Qué hacer? Vuelva a importar los metadatos actuales del IdP, o copie su certificado de firma actual. Para evitar un corte en el cambio, el IdP debería publicar el antiguo y el nuevo durante la transición.
«Assertion expired» / «not yet valid» (NotBefore, NotOnOrAfter)NotBefore, NotOnOrAfter

Causa probable. Los relojes del servidor de la aplicación y del IdP no están sincronizados, o el periodo de validez es muy corto.

¿Qué hacer? Sincronice los servidores (NTP). Permita una tolerancia de 2 a 5 minutos en la aplicación. Alargue la validez en el IdP solo como último recurso.
«Unexpected InResponseTo» / «unsolicited response»InResponseTo

Causa probable. La aplicación no encuentra la solicitud a la que responde la respuesta: sesión perdida entretanto (cookie bloqueada, otro navegador, otra pestaña), varios servidores sin compartir sesión, o un inicio de sesión lanzado desde el IdP mientras la aplicación lo prohíbe.

¿Qué hacer? Reinicie el inicio de sesión desde la aplicación en una sola pestaña. Detrás de un balanceador de carga, comparta el estado de sesión. Para el inicio iniciado por el IdP, permítalo explícitamente si es lo que se desea.
«NameID missing» o formato inesperadoNameID

Causa probable. La aplicación espera una dirección de correo y el IdP envía un identificador opaco (o al revés).

¿Qué hacer? Alinee el formato: emailAddress o persistent en ambos lados, y compruebe que el IdP tiene el valor correspondiente para el usuario.
Los atributos (nombre, grupos…) están vacíosAtributos

Causa probable. El IdP no envía el atributo, o lo envía con otro nombre (mail, email o un nombre largo estilo URI).

¿Qué hacer? En el IdP, añada el atributo a la lista que se envía a esta aplicación; en la aplicación, introduzca el nombre exacto, mayúsculas incluidas.
Bucle de redirección infinito

Causa probable. La aplicación no puede crear su sesión tras la respuesta (cookie bloqueada, Secure en http interno, o un ACS que a su vez redirige al inicio de sesión).

¿Qué hacer? Revise las cookies de sesión (dominio, Secure, SameSite) y que el ACS no esté protegido por el mismo inicio de sesión que debe completar.
El usuario está autenticado pero «acceso denegado»

Causa probable. En el IdP, el usuario no está asignado a la aplicación, o sus grupos no coinciden con las reglas de la aplicación.

¿Qué hacer? Asigne el usuario (o su grupo) a la aplicación en el IdP y revise después los atributos de grupo que se envían.
«Encrypted assertion» ilegibleAserción cifrada

Causa probable. El IdP cifra las aserciones pero la aplicación no tiene la clave de descifrado, o se entregó al IdP un certificado de cifrado equivocado.

¿Qué hacer? Entregue al IdP el certificado de cifrado de la aplicación (use="encryption") y conserve la clave privada correspondiente. ID-Kit todavía no descifra: desactive el cifrado para la prueba.
«Unable to decode SAMLRequest»Redirect

Causa probable. Con el binding Redirect, la solicitud se comprime (deflate) antes del base64. Una herramienta que solo decodifica base64 ve caracteres ilegibles.

¿Qué hacer? Use el decodificador de ID-Kit, que gestiona la compresión, o compruebe que la URL no se haya truncado.
«Status: RequestDenied» / «AuthnFailed»Estado

Causa probable. El IdP rechaza: aplicación desconocida (Entity ID no declarado), ACS no declarado, usuario desconocido o autenticación fallida.

¿Qué hacer? Lea el StatusMessage y el registro del IdP. Compruebe que la aplicación está declarada allí con el Entity ID y el ACS correctos.

¿Quiere verlo en directo? ID-Kit hace el papel que le falta y le muestra cada paso.