přechod na části stránky

Upozornění:
Používáte prohlížeč IE verze 6. Od 1. června 2012 nebude možné se s tímto prohlížečem do prostředí eAGRI přihlásit. Proveďte upgrade na IE verze min. 7 nebo použijte jiný prohlížeč (např. Mozilla Firefox nebo Google Chrome). Další informace zde.

Postup tvorby HASHe

Pro implementaci zabezpečení (autorizace) služeb ze skupiny „PF“ je možné použít zjednodušenou autentizaci prostřednictvím přihlašovacích údajů do Portálu farmáře (konkrétně uživatelského jména a přístupového WS klíče, který je určen pro volání webových služeb). Formát autentizačního elementu je uveden zde. Tento element se vkládá do hlavičky SOAP obálky (SOAP:Header) – viz zde.

Jak vytvořit identifikační řetězec

Hodnota, která se vkládá do tohoto elementu, se vytváří pomocí následujících funkcí:

  • hashovací funkce SHA1
  • hashovací funkce SHA512
  • kanonizační transformace
    XmlDsigC14NTransform(Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#")

Pokud nebudete využívat komunikační modul vOKOsCom nebo vOKOsComSender, který je pro tyto potřeby k dispozici, ale chcete implementovat tuto funkci vlastními silami, budete pro implementaci výše uvedených funkcí potřebovat alespoň povrchní znalosti práce s xml a SOAP.

Simulátor výpočtu HASH s libovolnými vstupními údaji

Pro celý výpočet jednotlivých kroků s využití reálných údajů (request a libovolný text jako WS klíč) připravilo MZe interaktivní aplikaci, která vypočítá hodnoty v rámci jednotlivých kroků a tím umožní vývojáři odladit funkčnost své komponenty. Aplikace je k dispozici zde.

Postup výpočtu je následující:

Z WS klíče pro volání webových služeb EPO vytvoříme SHA1 hashovací funkcí hash WS klíče (dále jen SHA1PWD - binárně) a mějme jej uložen v poli bytů (byte[]).

Z datové zprávy, kterou hodláme zabezpečit (a kterou máme již v SOAP obálce) vezmeme pouze SOAP:Body element a provedeme nad ním kanonizační transformaci, získáme tedy kanonizované SOAP:Body (dále jen CanonisedBody).

K CanonisedBody přičteme SHA1PWD (pozor ten je v binární podobě) (provedeme konkatenaci CanonisedBody a SHA1PWD) a provedeme výpočet SHA512 hashovací funkce nad tímto řetezcem.
Ukázka vstupu pro výpočet SHA512:

Výsledné pole bytů (z SHA512 fce) převedeme na base64, takto získáme zabezpečovací token, dále MessageToken

Vytvoříme novou SOAP:Header hlavičku (<vOKO-wss:Token xmlns:vOKO-wss="http://www.pds.eu/vOKO/v0200/wss"/>) která dále bude obsahovat atribut type s konstantní hodnotou „A01“, obsahem této hlavičky pak bude MessageToken.

Celá hlavička pak bude vypadat např. takto:

<vOKO-wss:Token type="A01" xmlns:vOKO-wss="http://www.pds.eu/vOKO/v0200/wss">UDu9cWkK9xryGvSJl7HhT6JgrmKcSfkYv3DPZc75GZpDbVU2RDR9envDjiR7fwPBxDEqFo/sUqI9fk6U3+GZmg==</vOKO-wss:Token>

 

Dále ve vlastní zprávě je u takto zabezpečených služeb povinnost vyplnění atributu „dn“ elementu UIDkey – tento atribut se plní přihlašovacím jménem k portálu farmáře (například 99lojza001).

Dále pro kontrolu přikládám příklad zprávy a výstupů hashovacích funkcí:

Kontrolní zpráva:

<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP:Header />
  <SOAP:Body>
    <XML>
      <pokus/>
      <pokus logo="as asa" ></pokus>
    </XML>
  </SOAP:Body>
</SOAP:Envelope>
   

Kanonizovaná zpráva:

<SOAP:Body xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"><XML><pokus></pokus><pokus logo="as asa"></pokus></XML></SOAP:Body>
    

Zpráva kompletní (vstup pro SHA1PWD je „WS klíč“):

<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"><SOAP:Header><vOKO-wss:Token type="A01" xmlns:vOKO-wss="http://www.pds.eu/vOKO/v0200/wss">UDu9cWkK9xryGvSJl7HhT6JgrmKcSfkYv3DPZc75GZpDbVU2RDR9envDjiR7fwPBxDEqFo/sUqI9fk6U3+GZmg==</vOKO-wss:Token></SOAP:Header><SOAP:Body><XML><pokus /><pokus logo="as asa"></pokus></XML></SOAP:Body></SOAP:Envelope>
    

SHA1 řetězce „heslo“ (v base64):

bgF7VGT4IKbBu16fbXEaZnqA2Oo=

SHA512 celé zprávy(MessageToken v base64):

UDu9cWkK9xryGvSJl7HhT6JgrmKcSfkYv3DPZc75GZpDbVU2RDR9envDjiR7fwPBxDEqFo/sUqI9fk6U3+GZmg==