Pregunta

Me han arrojado al mundo de las firmas digitales XML con un proyecto de iOS en el que estoy trabajando; Necesito verificar la firma digital de una afirmación SAML.

He estado leyendo mucho sobre la validación de las firmas XML, y creo que obtengo lo básico sobre cómo firma el resumen con la clave privada y puedo verificarlo con la clave pública (que debería estar en el certificado X509 incluido), así que yo puede estar seguro de la fuente del token Saml.

Encontré una Libray C, xmlsec, parece que tiene mucho código que necesito para verificar la firma y he estado trabajando para tratar de implementarlo. Sin embargo, no he podido resolverlo. Por lo que entiendo, estoy bastante seguro de que tendría que compilar la biblioteca con mi código. He copiado la fuente en mi proyecto, pero recibo errores durante la compilación sobre las cosas que no se definen.

Antes de pasar innumerables horas en ese camino, pensé que me comunicaría con la comunidad y vería si alguien ha tenido alguna experiencia verificación de una firma digital XML y si podría dar una idea de implementar eso en un proyecto de iOS.

Por lo que vale, aquí hay una parte de la afirmación SAML que estoy obteniendo del servicio de inicio de sesión único:

<?xml version="1.0" encoding="UTF-16"?>
<saml:Assertion ID="oQ2YZuHBspA_f91HM8o3.o6ZZla" IssueInstant="2011-05-06T00:51:40.733Z" Version="2.0" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<saml:Issuer>[...]</saml:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:SignedInfo>
        <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
        <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
        <ds:Reference URI="#oQ2YZuHBspA_f91HM8o3.o6ZZla">
            <ds:Transforms>
                <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
            <ds:DigestValue>zj4pCHBNMln+28Jq/v1YIScfiuw=</ds:DigestValue>
        </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue>[...]</ds:SignatureValue>
    <ds:KeyInfo>
        <ds:X509Data>
            <ds:X509Certificate>MIIDVjCCAj6gAwIBAgIGAS67wkWCMA0GCSqGSIb3[...]7bgf</ds:X509Certificate>
        </ds:X509Data>
        <ds:KeyValue>
            <ds:RSAKeyValue>
                <ds:Modulus>[...]</ds:Modulus>
                <ds:Exponent>AQAB</ds:Exponent>
            </ds:RSAKeyValue>
        </ds:KeyValue>
    </ds:KeyInfo>
</ds:Signature>

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top