SDK viafirma platform

Invocación a Viafirma Platform para autenticación por SSL client auth

Para autenticar a los usuarios mediante SSL client auth, sin clientes ricos (applets, JNLP, Viafirma Desktop, etc.), no es necesario utilizar los SDK (Java, .NET, etc.), pudiendo realizarse la integración con dos sencillas llamadas REST.

Preparación de operación de autenticación por SSL client auth

  • URL: /api/rest/services/ssl/auth
  • Seguridad: BASIC Auth pasando el API key / password
  • Método: POST
  • Body de ejemplo:
    {
    "callbackURL": "URL de la aplicación"
    }
    
  • Valores:

    • callbackURL: es una URL de la aplicación a la que se redirigirá al usuario una vez haya seleccionado su certificado. A esta URL se le añadirá como query param operationId=XXXX.

    • Body de respuesta:

      {
      "redirectURL": "URL a la que redirigir al usuario",
      "operationId": "ID de operación"
      }
      

Cuando se recibe la respuesta, es recomendable por seguridad almacenar el operationId y algún parámetro del usuario como la IP de origen o el sessionId, de forma que cuando se reciba la llamada a la callbackURL con el operationId como query param, se pueda comprobar que esos valores no han sido modificados.

Recuperación de los datos de validación del certificado de usuario

Una vez que se ha recibido la llamada a la callbackURL con el operationId como parámetro, se pueden recuperar los datos del certificado:

  • URL: /api/rest/services/auth/validation/operationId
  • Seguridad: BASIC Auth pasando el API key / password
  • Método: GET
  • Body de respuesta:
    {
    "firstName" : "JOHN",
    "lastName" : "DOE SMITH",
    "numberUserId" : "12345678X",
    "email" : "JOHNDOE@GMAIL.COM",
    "typeCertificate" : "FNMT",
    "typeLegal" : "CERTIFICADO_PERSONA_FISICA",
    "caName" : "CN=AC FNMT Usuarios, OU=Ceres, O=FNMT-RCM, C=ES",
    "properties" : {
      "1.3.6.1.4.1.5734.3.10.1" : "",
      "C" : "ES",
      "1.3.6.1.4.1.5734.1.4" : "12345678X",
      "SERIALNUMBER" : "12345678X",
      "1.3.6.1.5.5.7.48.2" : "http://www.cert.fnmt.es/certs/ACUSU.crt",
      "0.4.0.1862.1.1" : "",
      "1.3.6.1.5.5.7.48.1" : "http://ocspusu.cert.fnmt.es/ocspusu/OcspResponder",
      "1.3.6.1.4.1.5734.1.1" : "JOHM",
      "1.3.6.1.5.5.7.2.2" : "Certificado reconocido. Sujeto a las condiciones de uso expuestas en la DPC de la FNMT-RCM (C/Jorge Juan 106-28009-Madrid-España)",
      "1.3.6.1.5.5.7.1.3" : "",
      "pem" : "xxxxxx",
      "1.3.6.1.4.1.5734.1.3" : "SMITH",
      "1.3.6.1.4.1.5734.1.2" : "DOE",
      "GIVENNAME" : "JOHN",
      "2.5.29.17" : "JOHNDOE@GMAIL.COM",
      "apellido2" : "SMITH",
      "SURNAME" : "DOE SMITH",
      "2.5.29.19" : "",
      "1.3.6.1.5.5.7.1.1" : "",
      "apellido1" : "DOE",
      "1.3.6.1.5.5.7.2.1" : "http://www.cert.fnmt.es/dpcs/",
      "2.5.29.32" : "",
      "CN" : "DOE SMITH JOHN - 12345678X",
      "2.5.29.15" : "5",
      "2.5.29.37" : "",
      "0.4.0.1862.1.3" : "15",
      "signature_cert_notafter" : "Wed Dec 04 09:13:53 CET 2019"
    },
    "certificateStatus" : "VALID",
    "message" : "[code: 100] El certificado ha sido validado correctamente",
    "revocationMethod" : "OCSP",
    "revocationDate" : null,
    "ocspResponse" : {
      "statusOcspCode" : "0",
      "statusOcspValue" : "org.bouncycastle.asn1.ocsp.OCSPResponseStatus@202",
      "serverUrl" : "http://ocspusu.cert.fnmt.es/ocspusu/OcspResponder",
      "responseDate" : 1536044941000,
      "responseOcsp" : "xxxx",
      "responseIdType" : "BY_NAME",
      "responseIdData" : "CN=Servidor OCSP AC FNMT Usuarios,OU=Ceres,O=FNMT-RCM,C=ES"
    },
    "crlResponse" : null,
    "issuers" : [ {
      "firstName" : "",
      "lastName" : "AC FNMT Usuarios ",
      "numberUserId" : "",
      "email" : "",
      "typeCertificate" : "Tipo no reconocido",
      "typeLegal" : "CERTIFICADO_PERSONA_FISICA",
      "caName" : "OU=AC RAIZ FNMT-RCM, O=FNMT-RCM, C=ES",
      "properties" : {
        "2.5.29.19" : "0",
        "C" : "ES",
        "1.3.6.1.5.5.7.1.1" : "",
        "OU" : "Ceres",
        "1.3.6.1.5.5.7.2.1" : "http://www.cert.fnmt.es/dpcs/",
        "2.5.29.31" : "http://www.cert.fnmt.es/crls/ARLFNMTRCM.crl",
        "2.5.29.32" : "",
        "2.5.29.32.0" : "",
        "CN" : "AC FNMT Usuarios",
        "1.3.6.1.5.5.7.48.2" : "http://www.cert.fnmt.es/certs/ACRAIZFNMTRCM.crt",
        "2.5.29.15" : "1",
        "1.3.6.1.5.5.7.48.1" : "http://ocspfnmtrcmca.cert.fnmt.es/ocspfnmtrcmca/OcspResponder",
        "O" : "FNMT-RCM",
        "signature_cert_notafter" : "Sun Oct 28 12:48:58 CET 2029",
        "1.3.6.1.5.5.7.2.2" : "Sujeto a las condiciones de uso expuestas en la Declaración de Prácticas de Certificación de la FNMT-RCM ( C/ Jorge Juan, 106-28009-Madrid-España)",
        "pem" : "xxxx"
      },
      "certificateStatus" : "VALID",
      "message" : "[code: 100] El certificado ha sido validado correctamente",
      "revocationMethod" : "OCSP",
      "revocationDate" : null,
      "ocspResponse" : {
        "statusOcspCode" : "0",
        "statusOcspValue" : "org.bouncycastle.asn1.ocsp.OCSPResponseStatus@202",
        "serverUrl" : "http://ocspusu.cert.fnmt.es/ocspusu/OcspResponder",
        "responseDate" : 1536044941000,
        "responseOcsp" : "xxxxx",
        "responseIdType" : "BY_NAME",
        "responseIdData" : "CN=Servidor OCSP AC FNMT Usuarios,OU=Ceres,O=FNMT-RCM,C=ES"
      },
      "crlResponse" : null,
      "issuers" : null,
      "x509CertificateB64" : "xxxx",
      "subjectDN" : "CN=AC FNMT Usuarios, OU=Ceres, O=FNMT-RCM, C=ES",
      "oids" : null
    }, {
      "firstName" : "",
      "lastName" : " ",
      "numberUserId" : "",
      "email" : "",
      "typeCertificate" : "Tipo no reconocido",
      "typeLegal" : "CERTIFICADO_PERSONA_FISICA",
      "caName" : "OU=AC RAIZ FNMT-RCM, O=FNMT-RCM, C=ES",
      "properties" : {
        "2.5.29.19" : "TRUE",
        "C" : "ES",
        "signature_cert_notafter" : "Tue Jan 01 01:00:00 CET 2030",
        "OU" : "AC RAIZ FNMT-RCM",
        "1.3.6.1.5.5.7.2.1" : "http://www.cert.fnmt.es/dpcs/",
        "pem" : "xxxx",
        "2.5.29.32" : "",
        "2.5.29.32.0" : "",
        "2.5.29.15" : "1",
        "O" : "FNMT-RCM"
      },
      "certificateStatus" : "VALID",
      "message" : "[code: 100] El certificado ha sido validado correctamente",
      "revocationMethod" : "OCSP",
      "revocationDate" : null,
      "ocspResponse" : {
        "statusOcspCode" : "0",
        "statusOcspValue" : "org.bouncycastle.asn1.ocsp.OCSPResponseStatus@202",
        "serverUrl" : "http://ocspusu.cert.fnmt.es/ocspusu/OcspResponder",
        "responseDate" : 1536044941000,
        "responseOcsp" : "xxxxx",
        "responseIdType" : "BY_NAME",
        "responseIdData" : "CN=Servidor OCSP AC FNMT Usuarios,OU=Ceres,O=FNMT-RCM,C=ES"
      },
      "crlResponse" : null,
      "issuers" : null,
      "x509CertificateB64" : "xxxxx",
      "subjectDN" : "OU=AC RAIZ FNMT-RCM, O=FNMT-RCM, C=ES",
      "oids" : null
    } ],
    "x509CertificateB64" : "xxxxx",
    "subjectDN" : "CN=DOE SMITH JOHN - 12345678X, GIVENNAME=JOHN, SURNAME=DOE SMITH, SERIALNUMBER=12345678X, C=ES",
    "oids" : null
    }
    
    El sistema devuelve la información completa de la validación, incluyendo los datos contenidos en el certificado, todos sus OIDs, así como las evidencias de validación no únicamente del certificado del usuario, sino también de los certificados de las subCAs y root CA que componen su cadena de certificación. La aplicación cliente deberá utilizar esta información para poder realizar las operaciones de autenticación.