<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ingent &#187; b2b</title>
	<atom:link href="http://www.ingent.net/category/b2b/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ingent.net</link>
	<description></description>
	<lastBuildDate>Tue, 06 Nov 2012 10:15:34 +0000</lastBuildDate>
	<language>ca</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Aspectes tècnics de PEPPOL</title>
		<link>http://www.ingent.net/ca/2011/11/peppol-pan-european-public-procurement-online/</link>
		<comments>http://www.ingent.net/ca/2011/11/peppol-pan-european-public-procurement-online/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 13:03:15 +0000</pubDate>
		<dc:creator>David Escala</dc:creator>
				<category><![CDATA[b2b]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[peppol]]></category>

		<guid isPermaLink="false">http://www.ingent.net/?p=247</guid>
		<description><![CDATA[Aquí explicaré aspectes tècnics referents a enviar i rebre documents mitjançant PEPPOL, que son les inicials de &#8220;Pan-European Public Procurement OnLine&#8221;.  Un projecte pilot que va sobre la contractació pública en línia a Europa que quan estigui en marxa servirà per intercanviar documents electrònics amb l&#8217;administració pública europea. Aquesta informació tècnica és pública, però està escampada en&#8230;]]></description>
				<content:encoded><![CDATA[<p>Aquí explicaré aspectes tècnics referents a enviar i rebre documents mitjançant <a title="Pan-European Public Procurement OnLine" href="http://www.peppol.eu/">PEPPOL</a>, que son les inicials de &#8220;Pan-European Public Procurement OnLine&#8221;.  Un projecte pilot que va sobre la contractació pública en línia a Europa que quan estigui en marxa servirà per intercanviar documents electrònics amb l&#8217;administració pública europea. Aquesta informació tècnica és pública, però està escampada en forums i documents de tot tipus.</p>
<h2>Arquitectura</h2>
<p>Els tres elements de l&#8217;arquitectura son els AP, els SMP i un únic SML.</p>
<ul>
<li><strong>AP</strong> = Access Point. És el servei que permet rebre documents de Peppol. Per exemple <a href="https://ap.b2brouter.com/">ap.b2brouter.com</a></li>
<li><strong>SMP</strong> = Service Metadata Publisher. És el servei que permet publicar les dades del participants. Per exemple dir a quin AP s&#8217;ha d&#8217;enviar un cert tipus de documents. Un exemple de SMP seria <a href="http://smp.b2brouter.com/">smp.b2brouter.com</a></li>
<li><strong>SML</strong> = Service Metadata Locator. És un servidor DNS que donat un destinatari et dóna el SMP on hi ha publicades les seves dades. El domini de la zona DNS és peppolcentral.org.</li>
</ul>
<p><span class="Apple-style-span" style="font-size: 26px; line-height: 28px;">Certificats</span></p>
<p>Els participants s&#8217;identifiquen i s&#8217;autoritzen mitjançant una <a href="http://en.wikipedia.org/wiki/Public_key_infrastructure">PKI</a> X.509. Al projecte pilot hi ha <a title="Root CAs" href="https://svn.forge.osor.eu/svn/peppol/PEPPOL_EIA/1-ICT_Architecture/1-ICT-Transport_Infrastructure/16-ICT-Implementations/PKI/PEPPOL%20Pilot%20CA%20certificates.zip">una root CA i tres CA intermèdies</a> on la &#8221;PEPPOL Root Test CA&#8221; signa les tres CA intermèdies.</p>
<p>Es necessiten dos certificats, el de l&#8217;AP i el del SMP. Existeix un tercer certificat, que es diu STS, que no es fa servir.  Per obtenir aquests certificats s&#8217;ha de demanar <a href="http://www.peppol.eu/peppol/join_form">participar en el pilot PEPPOL</a>.</p>
<ol>
<li>El certificat de l&#8217;AP està signat per la &#8220;PEPPOL Access Point Test CA&#8221;. Serveix per poder enviar a altres AP i rebre d&#8217;altres AP.</li>
<li>El certificat del SMP està signat per la &#8220;PEPPOL Service Metadata Publisher Test CA&#8221;. Serveix per poder publicar entrades DNS al SML.</li>
<li>El STS està signat per la &#8220;PEPPOL Security Token Service Test CA&#8221; i de moment no serveix per a res.</li>
</ol>
<h2>Enviar documents</h2>
<p><span class="Apple-style-span" style="font-size: 13px; line-height: 19px;">És evident que per poder enviar s&#8217;ha de saber l&#8217;adreça del destinatari, i en el cas de</span> Peppol l&#8217;adreça del destinatari és un <strong>Participant ID</strong>, un <strong>Process ID</strong> i un <strong>Document ID</strong>.</p>
<p>Per enviar un document el primer pas és esbrinar quin és l&#8217;AP del destinatari.  Per fer això s&#8217;agafa l&#8217;adreça del destinatari (el participant, el procés i el document) i s&#8217;utilitza el SML i un SMP:</p>
<ol>
<li>El Participant ID es converteix a una zona DNS mitjançant un hash MD5, un prefixe &#8220;B-&#8221; i un sufixe. Per exemple el Participant ID &#8220;9912:esb63276174&#8243; es converteix en &#8220;B-ae2866398fd1d4c0d35343e8464a5258.iso6523-actorid-upis.sml.peppolcentral.org&#8221;</li>
<li>La zona DNS es resol i s&#8217;obté una IP. Aquesta IP és la del SMP, que és el lloc on hi ha la informació referent al Participant ID que busquem. En l&#8217;exemple, la zona resol al CNAME smp.b2brouter.com i finalment a la IP del SMP.</li>
<li>Finalment s&#8217;accedeix per HTTP a les dades del Participant ID que el SMP té publicades mitjançant la URL http://B-ae2866398fd1d4c0d35343e8464a5258.iso6523-actorid-upis.sml.peppolcentral.org/complete/iso6523-actorid-upis::9912:esb63276174</li>
</ol>
<div><span class="Apple-style-span" style="line-height: 20px;">El <a href="http://B-ae2866398fd1d4c0d35343e8464a5258.iso6523-actorid-upis.sml.peppolcentral.org/complete/iso6523-actorid-upis::9912:esb63276174">document XML que retorna el SMP</a> conté la referència al AP que busquem. A dins del XML hi ha la llista de documents que accepta el participant, i per cada document la llista de processos. Per exemple, per enviar una factura &#8220;urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice(&#8230;)&#8221; al procés &#8220;urn:www.cenbii.eu:profile:bii04:ver1.0&#8243; en aquest cas l&#8217;AP seria <a href="https://ap.b2brouter.com/peppol-start-server/accesspointService">ap.b2brouter.com</a>.</span></div>
<p>Un cop es coneix la URL del AP destí només cal enviar-li el document mitjançant el que anomenen &#8221;Secure Trusted Asynchronous Reliable Transport&#8221; o <strong>START</strong> per als amics, que defineix com els AP han d&#8217;utilitzar aquestes 5 tecnologies per comunicar-se:</p>
<ul>
<li><strong><a href="http://en.wikipedia.org/wiki/SOAP">SOAP</a></strong> 1.1 &#8211; Simple Object Access Protocol.</li>
<li><strong><a href="http://en.wikipedia.org/wiki/Security_Assertion_Markup_Language">WS-Security</a></strong> 1.1 &#8211; a flexible and feature-rich extension to SOAP to apply security to web service.</li>
<li><strong><a href="http://en.wikipedia.org/wiki/WS-Transfer">WS-Transfer</a> </strong>- a specification defining the transfer of an XML-representation of an WS-addressable resource &#8211; as a standard approach to accessing the message channels.</li>
<li><strong><a href="http://en.wikipedia.org/wiki/WS-ReliableMessaging ">WS-ReliableMessaging</a></strong> 1.1 &#8211; a protocol that allows SOAP messages to be reliably delivered between distributed applications.</li>
<li><strong><a href="http://en.wikipedia.org/wiki/Security_Assertion_Markup_Language">SAML</a></strong> 2.0 &#8211; Security Assertion Markup Language &#8211; an XML-based open standard for exchanging authentication and authorization data between security domains.</li>
</ul>
<p>Per sort la implementació de referència és en Java i Java ja té totes les llibreries ws-* necessàries.</p>
<p><span class="Apple-style-span" style="font-size: 26px; line-height: 28px;">Keystores Java</span></p>
<p>És molt important tenir clar quins certificats van a cada element de l&#8217;arquitectura:</p>
<ul>
<li>Tant el client com el servidor AP necessiten el certificat signat per la &#8220;PEPPOL Access Point Test CA&#8221; per poder enviar i rebre. Crearem una keystore i li direm ap.jks</li>
<li>El SMP necessita el certificat signat per la &#8220;PEPPOL Service Metadata Publisher Test CA&#8221; per poder actualitzar les entrades DNS en el SML. Crearem una alta keystore i li direm smp.jks</li>
<li>Necessitem també una keystore addicional per posar-hi els certificats en els que confiem. N&#8217;hi direm peppol-cacerts.jks</li>
</ul>
<p>Per crear les keystores podem utilitzar el <a href="http://portecle.sourceforge.net/">Portecle</a> perquè el keytool és força críptic. Coses a tenir en compte:</p>
<ol>
<li>Posar l&#8217;alias &#8220;1&#8243; a la clau privada.</li>
<li>Posar &#8220;peppol&#8221; de password, tant a la keystore com a la clau privada.</li>
<li>Utilitzar l&#8217;opció &#8220;Import CA Reply&#8221; amb botó dret sobre la clau privada &#8220;1&#8243;, per afegir el nostre certificat signat per la CA.</li>
<li>La keystore del servidor AP només pot tenir un certificat, perquè agafa el primer que troba i si en tingués més es podria confondre pobrissó.</li>
</ol>
<h2>Implementacions</h2>
<p>Les implementacions que hem fet servir son Open Source:</p>
<ul>
<li><a href="https://joinup.ec.europa.eu/svn/peppol/dev/infrastructure/sample_implementations/metro_java/peppol-start-server/">Servidor Access Point</a> - Java web application, projecte Netbeans</li>
<li><a href="https://joinup.ec.europa.eu/svn/peppol/dev/infrastructure/sample_implementations/metro_java/peppol-start-client/">Client per enviar a un Access Point</a> - Java application, projecte Netbeans</li>
<li><a href="https://joinup.ec.europa.eu/svn/peppol/dev/infrastructure/java_tags/smp-webapp-1.1.0/">Servidor Service Metadata Publisher</a> - Java web application, projecte Maven</li>
<li><a href="https://joinup.ec.europa.eu/svn/peppol/dev/infrastructure/java_tags/smp-client-console-1.1.0/">Client per gestionar entrades al Service Metadata Publisher</a> -  Java application, projecte Maven</li>
<li><a href="https://joinup.ec.europa.eu/svn/peppol/dev/infrastructure/java_tags/sml-client-apps-1.1.2/">Client per gestionar entrades al Service Metadata Locator</a> - Java desktop application, projecte Maven</li>
</ul>
<div>També hem desenvolupat algunes eines auxiliars que podeu trobar a <a href="https://github.com/descala/b2b-utils/">github</a>.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ingent.net/ca/2011/11/peppol-pan-european-public-procurement-online/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
