.. _viewapi_sec: Zabezpečení ============== Funkce pro zobrazení komponent vyžadují autentizovaného uživatele. Na základě autentizace je provedena autorizace k provedení dané operace. Jednotlivé implementace digitálního archivu mohou podporovat více metod zabezpečení přístupu a autentizace. Následují příklady způsobu zabezpečení přístupu s uvedením výhod jednotlivých přístupů. Varianty zabezpečení API pro zobrazení komponent: - :ref:`individuální řešení ` - :ref:`řešení pomocí API gateway ` - :ref:`řešení pomocí API key ` .. _viewapi_sec_indiv: Individuální řešení ----------------------- Architektura zabezpečení přístupu je odlišná v jednotlivých implementacích digitálních archivů a vychází z požadavků daného řešení. Každé individuální řešení musí pokrývat řešení situace, kdy je zaslán požadavek na zobrazení příslušné komponenty a uživatel není autentizován. V takovém případě dojde k vyvolání autentizačního mechanismu a po jeho úspěšném dokončení pokračuje již započatý požadavek. Dochází k tomu bez nutnosti opětovného zaslání ze strany aplikace pro zpracování archiválií. Všechna řešení by měla umožňovat také efektivní podporu pro opětovné zobrazení další komponenty, a to tak, aby se uživatel nemusel pro každý jednotlivý požadavek opětovně autentizovat. .. _viewapi_sec_apigw: Řešení pomocí API gateway -------------------------------------------------- Aplikace pro zpracování archiválií může být součástí vnitřní infrastruktury digitálního archivu. Jedná se o poměrně obvyklé řešení pro :term:`archivy `, které provozují vlastní :term:`digitální archiv`. V těchto případech je součástí řešení obvykle API gateway (nebo jiná technologická obdoba), kde se realizuje autentizace všech dílčích částí řešení digitálního archivu. Jednotlivé komponenty dostávají informaci o platné autentizaci v hlavičce příchozího požadavku. Příklady takovýchto technologií: používání JWT tokenů či OpenID nebo distribuovaná autentizace pomocí SAML, Shibboleth a další. V uvedených případech není součástí odesílaného požadavku na zobrazení komponenty žádná dodatečná autentizační informace. Vše musí být zajištěno mechanismy na straně API gateway. Viz také: :ref:`api_security_portal`. .. _viewapi_sec_apikey: Řešení pomocí API key ---------------------- Pro přístup k datům uloženým v rámci digitálního archivu je navržen přístup pomocí specializovaných API klíčů, viz :ref:`api_security_apikey`. Tento mechanismus je možné využít i pro přístup z klientské aplikace pro zobrazení komponent. Mechanismus API klíčů může být využíván jak pro tzv. sdílené technické účty, tak pro individuální uživatelské účty. V případě využití tohoto mechanismu je nutné na straně klientské aplikace zajistit správné podepsání příslušného požadavku, a to se všemi požadavky z toho plynoucími. Toto řešení je vhodné, pokud je již na straně digitálního archivu tento mechanismus využit pro autentizaci pro :ref:`baseapi`. Je nutné posoudit, zda je možné využívat i sdílené technické účty pro zobrazování, nebo jen individuální. V případě využití sdílených technických účtů je nutné zajistit, aby nemohlo dojít k úniku klíčů, a takovéto klíče nepřenášet do klientské aplikace. Individuální klíče je možné využívat i přímo z klientské aplikace.