{"id":11853,"date":"2012-02-02T11:52:00","date_gmt":"2012-02-02T14:52:00","guid":{"rendered":"http:\/\/fx2.com.uy\/site\/extensiones-xslt-de-datapower-extraer-datos-de-un-certificado-digital\/"},"modified":"2012-02-02T11:52:00","modified_gmt":"2012-02-02T14:52:00","slug":"extensiones-xslt-de-datapower-extraer-datos-de-un-certificado-digital","status":"publish","type":"post","link":"https:\/\/fx2.com.uy\/es\/noticias\/extensiones-xslt-de-datapower-extraer-datos-de-un-certificado-digital\/","title":{"rendered":"Extensiones XSLT de Datapower &#8211; Extraer datos de un Certificado Digital"},"content":{"rendered":"<p style=\"text-align: justify;\">IBM WebSphere Datapower provee una extensi\u00f3n de XSLT que pone a disposici\u00f3n una serie de funciones y elementos adicionales para realizar operaciones complejas que nos permiten acceder a mas informaci\u00f3n al momento de \u201cmanejar datos\u201d en los diferentes servicios.<\/p>\n<p style=\"text-align: justify;\">Las extensiones abarcan desde manejo adicional de tipos simples como String o DateTime, pasando por el manejo de datos binarios y encoding hasta funciones criptogr\u00e1ficas para manejo de firma y certificados.<\/p>\n<p style=\"text-align: justify;\"><!--more--><\/p>\n<p style=\"text-align: justify;\">Para poder hacer uso de las extensiones debemos incluir el namespace al momento de crear la plantilla XSLT:<\/p>\n<p>&nbsp;<\/p>\n<p>&lt;xsl:stylesheet version=\u201d1.0\u201c<\/p>\n<p>xmlns:xsl=\u201dhttp:\/\/www.w3.org\/1999\/XSL\/Transform\u201c<\/p>\n<p>xmlns:ds=\u201dhttp:\/\/www.w3.org\/2000\/09\/xmldsig#\u201c<\/p>\n<p>xmlns:dp=\u201dhttp:\/\/www.datapower.com\/extensions\u201cextension-element-prefixes=\u201ddp\u201c &gt;<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Luego debemos seleccionar cual\/cuales de las extensiones aplican mejor a la resoluci\u00f3n de nuestro problema.<\/p>\n<p style=\"text-align: justify;\">Un caso que hemos resuelto recientemente es el de extraer informaci\u00f3n de un certificado para comparar ciertos datos de emisi\u00f3n del certificado con datos que vienen provistos en nuestro XML .<\/p>\n<p style=\"text-align: justify;\">Para ello debemos identificar el nodo donde viene la informaci\u00f3n del certificado de una forma similar a lo siguiente:<\/p>\n<div><span lang=\"EN-US\">\u00a0<\/span><\/div>\n<p>&lt;xsl:variable name=\u201dX509Cert\u201c&gt;<\/p>\n<p>&lt;xsl:value-of select=\u201dRoot\/MiCabezal\/X509Certificate\u201c\/&gt;<\/p>\n<p>xsl:variable&gt;<\/p>\n<p style=\"text-align: justify;\">Para poder utilizar la funci\u00f3n de extracci\u00f3n de datos del certificado debemos concatenar el prefijo que indica el tipo de objeto en este caso \u201ccert\u201d.<\/p>\n<p>&lt;xsl:variable name=\u201dcertificado\u201c&gt;<\/p>\n<p>&lt;xsl:value-of select=\u201dconcat(\u2018cert:\u2019, $X509Cert)\u201c\/&gt;<\/p>\n<p>xsl:variable&gt;<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Una vez completados estos pasos podemos pasar a utilizar las funciones espec\u00edficas provistas por la extensi\u00f3n de Datapower.<\/p>\n<p>&nbsp;<\/p>\n<p>&lt;xsl:variable name=\u201dcert-data\u201d select=\u201ddp:get-cert-details($certificado)\u201c\/&gt;<\/p>\n<p>&lt;xsl:variable name=\u201dcert-auth\u201d select=\u201ddp:get-cert-issuer($certificado)\u201c\/&gt;<\/p>\n<p>&lt;xsl:variable name=\u201dcert-serial\u201d select=\u201ddp:get-cert-serial($certificado)\u201c\/&gt;<\/p>\n<p>&lt;xsl:variable name=\u201dcert-subject\u201c select=\u201ddp:get-cert-subject($certificado)\u201c\/&gt;<\/p>\n<p style=\"text-align: justify;\">Adicionalmente, podemos poner estos datos en variables de contexto para poder utilizar mas adelante en esta plantilla u otra durante le procesamiento de una regla o una acci\u00f3n espec\u00edfica en un la llamada a un servicio.<\/p>\n<p style=\"text-align: justify;\">Esto se logra mediante una asignaci\u00f3n de este tipo:<\/p>\n<div><span lang=\"EN-US\">\u00a0<\/span><\/div>\n<div><span lang=\"EN-US\">&lt;dp:set-variable name=\u201d\u2018var:\/\/context\/saved\/Subject\u2019\u201c value=\u201dstring($cert-subject)\u201c\/&gt;<\/span><\/div>\n<div><\/div>\n<p style=\"text-align: justify;\">Esto nos permitir\u00e1 tener un control mucho mayor de la informaci\u00f3n y poder realizar tareas especificas en diferentes pasos del procesamiento de las llamadas o respuestas de los servicios.<\/p>\n<p style=\"text-align: justify;\">El siguiente documento detalla las extensiones de Datapower para XSLT:<\/p>\n<div><a href=\"http:\/\/publib.boulder.ibm.com\/infocenter\/wsdatap\/v3r8m1\/topic\/xs40\/ExtensionFunctions.pdf\" target=\"_blank\" rel=\"noopener noreferrer\"><span>http:\/\/publib.boulder.ibm.com\/<wbr \/>infocenter\/wsdatap\/v3r8m1\/<wbr \/>topic\/xs40\/ExtensionFunctions.<wbr \/>pdf<\/span><\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>IBM WebSphere Datapower provee una extensi\u00f3n de XSLT que pone a disposici\u00f3n una serie de funciones y elementos adicionales para realizar operaciones complejas que nos permiten acceder a mas informaci\u00f3n al momento de \u201cmanejar datos\u201d en los diferentes servicios. Las extensiones abarcan desde manejo adicional de tipos simples como String o DateTime, pasando por el [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[62],"tags":[],"_links":{"self":[{"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/posts\/11853"}],"collection":[{"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/comments?post=11853"}],"version-history":[{"count":0,"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/posts\/11853\/revisions"}],"wp:attachment":[{"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/media?parent=11853"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/categories?post=11853"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fx2.com.uy\/es\/wp-json\/wp\/v2\/tags?post=11853"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}