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 + ověření requestu na XSD služby

Pro výpočet jednotlivých kroků s využití reálných údajů (request a libovolný text jako WS klíč /pravý nebo fiktivní/) připravilo MZe interaktivní aplikaci. Tato aplikace vypočítá hodnoty v rámci jednotlivých kroků a tím umožní vývojáři odladit funkčnost své komponenty proti výsledkům jednotlivých kroků.

Aplikace také na základě identifikace služby v requestu provede ověření request na XSD konkrétní služby a případně vypíše chyby, pokud není request validní na XSD služby.

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:

HASH

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==

 

Tyto webové stránky využívají k analýze návštěvnosti soubory cookies. Pokud váš internetový prohlížeč má v nastavení cookies povoleny, je nezbytný váš souhlas s použitím této technologie.

Více informací

Chyba komunikace se serverem

Nastaly technické problémy. Zkontrolujte prosím připojení k síti, a pokud pracujete jako přihlášený uživatel, ověřte prosím nastavení VPN a stav přihlášení.