Projekt vOKO
Projekt vOKO je dlouhodobým interním vývojovým projektem firmy PDS s.r.o., jehož náplní je vývoj aplikačně-serverového modulárního systému integrujícího moderní prvky komunikačních technologií. Cílem projektu je vývoj nezávislého řešení komunikační vrstvy pro podporu komunikace mezi sdílenými informačními systémy v prostředí autorizovaných webových služeb (web-services) na bázi "XML rozhraní" (SOA architektura).
Celý systém komunikačního rozhraní v rámci projektu vOKO je vyvíjen jako skupina nezávislých komponent (modulů), které je možné aplikovat (implementovat) samostatně do nových i existujících informačních systémů, nebo jako komplexní aplikačně-serverové řešení. Celé řešení se skládá ze dvou základních částí:
Serverová část
Serverová část je komplexním řešením webové aplikace s vlastní oddělenou aplikací pro základní zpracování, samostatnou autentizační/autorizační vrstvou a sadou komplexních funkcí/služeb pro zpracování konkrétních požadavků. Celé řešení tedy tvoří několik relativně samostatných částí:
- Vystavená webová aplikace
Serverová aplikace je klasickou webovou aplikací určenou pro příjem zpráv (XML requestů) na stanovené url adrese. Tato vystavená webová aplikace pouze tyto zprávy přijímá, provádí nejzákladnější vyhodnocení a v případě úspěšného převzetí předává zprávu (XML request) ke zpracování vlastní vnitřní aplikaci.
- Vnitřní aplikace základního zpracování
Tato aplikace provádí komplexní analýzu požadavku v rozsahu společných procesů pro všechny připojené služby, například identifikaci, autentizaci a autorizaci uživatele, vyhodnocení přítomnosti a platnosti všech požadovaných bezpečnostních prvků včetně digitálního podpisu, validaci formátu a základního obsahu zpráv.
- Autentizační a autorizační vrstva
Relativně samostatná autentizační a autorizační vrstva provádí na základě požadavku "Vnitřní aplikace základního zpracování" úplnou autentizaci a autorizaci uživatele a jeho požadavku. Klíčovou části této vrstvy je vlastní autentizační/autorizační databáze, která umožňuje kombinovat skupinový i individuální přístup k jednotlivým službám a skupinám služeb, diferencovat úroveň autentizace pro jednotlivé služby a skupiny služeb, specifikovat datová i jiná omezení v rámci konkrétní služby (konkrétní uživatel smí využít příslušnou službu, ale například s omezením výstupních dat pro specifikovanou oblast apod.). V poslední době byl implementován i mechanismus kontroly "zastoupení" uživatele (týká se implementace elektronické podatelny, kdy je třeba umožnit fyzické osobě podávat formuláře v zastoupení jiné osoby - například za firmu, jejímž je statutárním zástupcem).
- Vrstva služeb/funkcí
Jedná se o sadu aplikačních modulů provádějících vlastní definované datové operace. V případě úspěšného zpracování v předchozích krocích je požadavek (XML reqeust) předán k vlastnímu zpracování vždy konkrétní službě. Ta provede podrobnou analýzu požadavku (provádí další kontroly, které již není možné začlenit do "obecných" kontrol prováděných primární aplikací serveru) a provádí doplňující autorizační kroky (v rámci serveru je možné omezit nejen přístup ke službě jako takové, ale v rámci služby je ještě možné definovat další omezení uživatele - například povolení nahlížet pouze do dat podle místní příslušnosti, specifikace problému apod.).
Klientská část
Na rozdíl od serverové části, která je vyvíjena jako komplexní serverové řešení, je klientská část vyvíjena primárně s cílem umožnit její implementaci do jiného systému (připojení k aplikaci 3. strany). Původním cílem bylo vyvinout jednoduchou komunikační knihovnu umožňující připojení k libovolnému systému ve formě "dll". Vlastní cílová funkčnost byla zaměřena na "kompletaci" XML souborů před vlastním odesláním (doplňování autentizačních prvků, kompletaci komunikačních (SOAP) obálek, validaci formátu XML, digitální podpis, a další obecné funkce). V aktuální verzi však možnosti aplikační části výrazně převyšují tento původní požadavek.
Klientská část se skládá ze dvou relativně samostatných modulů:
- komunikační komponenta (komunikační modul)
Jedná se o lokální komponentu (".NET modul" s implementovaným COM rozhraním), kterou lze připojit k libovolné aplikaci. Zajišťuje kompletní požadované operace spojené s datovým přenosem na protokolu HTTP(S). Umožňuje digitální podepsání, šifrování certifikátem příjemce, generuje SOAP obálku, umožňuje využití vlastních identifikačních a jednorázových šifrovacích klíčů (UCS), atd. Splňuje zákonem stanovené požadavky pro komunikaci s využitím digitálního podpisu včetně zobrazení odesílané zprávy před podpisem. Při napojení na řídící aplikaci lze prostřednictvím parametrického nastavení řídit míru "autonomie" komunikačního modulu ve vazbě na tuto aplikaci. Modul ale obsahuje i vlastní "uživatelské" rozhraní, které lze využít v okamžiku, kdy není zájem napojit tento modul na aplikaci exitující.
- vizualizační modul (uživatelské rozhraní)
Pracuje na principu interpretace vlastního formátu "XML formulářů" se složitější vnitřní logikou. Zápis těchto "formulářů" umožňuje kombinovat standardní prvky, jako je HTML, CSS, XML, XSD, XSLT s prvky interní funkčnosti aplikace. Některé funkce nezbytné pro zpracování na straně klienta tak lze volat ze zobrazených stránek bez použití scriptů či aktivních prvků na straně serveru.
