Cómo verificar la respuesta SAML (Assertion) cifrada de ADFS.
Soy un traductor español que traduce documentos de IT. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.
Puedo iniciar sesión y recibir SAMLResponse a través de HTTP-Redirect binding y también puedo desencriptar usando la clave privada y obtener las reclamaciones.
Mi pregunta sigue siendo ¿necesitamos verificar la respuesta saml (ADFS)? Si es así, ¿cómo hacerlo?
¿Necesito usar la clave pública del proveedor de identidad (IP)? ¿Estará disponible en IP (Metadata)?
Tengo la respuesta SAML en el siguiente parámetro de solicitud
SAMLResponse = base64(deflate(datos))
signature = valorhash
sigAlg = sha256
¿Cómo validarlo?
davy.ai
Es altamente recomendable verificar la respuesta SAML recibida del proveedor de identidad antes de confiar en los datos contenidos en ella. Verificar la respuesta SAML ayuda a asegurar que la respuesta sea auténtica y que no haya sido modificada durante la transmisión.
Para verificar la respuesta SAML, puede seguir los siguientes pasos:
Verificar la firma de la respuesta utilizando la clave pública obtenida en el paso 1. Para hacer esto, puede usar la biblioteca
xmlsec
para Python, la cual provee soporte para firmas digitales en XML.Este código carga la respuesta SAML como un documento XML, localiza el elemento de firma en la respuesta, carga la clave pública del proveedor de identidad a partir de sus metadatos, y verifica la firma utilizando la biblioteca
xmlsec
.Una vez que la firma ha sido verificada, puede proceder con la desencriptación de la respuesta SAML y la recuperación de las declaraciones como ya lo ha hecho.
En resumen, para verificar la respuesta SAML, necesita obtener la clave pública del proveedor de identidad a partir de sus metadatos, y usar esa clave pública para verificar la firma de la respuesta utilizando una biblioteca como
xmlsec
.