====== Implementace federativní autentizace v Portálu EIZ ====== Shibbolizace Portálu EIZ spočívá v implementaci: * indikace nativní podpory technologie Shibboleth u jednotlivých zdrojů * výpis zdrojů s nativní podporou Shibboleth * autentizace uživatelů přes Shibboleth přímo v Portálu EIZ * indikace přístupnosti zdrojů podle afiliací uživatele * stránky nápovědy k Shibboleth a přihlašování k el. inf. zdrojům * stránky s přehledem atributů uživatele poskytovaných Identity Providerem * správa mapování afiliací pro autorizaci v Admin části Portálu EIZ ==== Indikace podpory technologie Shibboleth ==== K záznamu o elektronickém zdroji (dále jen zdroj(e)) byla přidána metadatová pole, která nesou následující informace: * zda zdroj podporuje přihlášení přes Shibboleth * možnost vložení (wayfless) odkazu na přihlášení přes Shibboleth (pro en i cs rozhraní Portálu EIZ) * možnost vložení dodatečných informací pro uživatele (en i cs) Výše zmíněné informace lze nastavit standardním způsobem editací záznamu o zdroji v auth/ části Portálu EIZ. Ve veřejné části jsou tyto informace následně prezentovány jednak ve stručných seznamech zdrojů (přímý link dle nastavení v konfiguračním souboru - je možné sladit Shibboleth a EZproxy, viz dále), jednak u zobrazení detailních informací o zdroji - vyplněným odkazem ve výpisu metadat zdroje a ikonou gryfa v pravém horním rohu. Po přejetí kurzorem myši přes ikonu se otevře javascriptové okno, které informuje o tom, že zdroj podporuje Shibboleth, zobrazí informace a linky vyplněné v auth/ části portálu (viz výše). Klinutím na ikonu gryfa je uživatel přenesen na nápovědu (viz Vzdálený přístup přes Shibboleth). Příslušné popisky lze standardně upravovat přes I18N. Související konfigurační direktivy:\\ //shibboleth_config.php//: * $ENABLE_SHIBBOLETH * $SHIB_DISABLE_EZPROXY_LINK * $SHIB_SHOW_JS_TOOLTIP_IN_LISTS ==== Stránka nápovědy Vzdálený přístup přes Shibboleth ==== Do menu byl přidán odkaz (možno i deaktivovat) na statickou stránku informující uživatele o připojování k elektronickým informačním zdrojům přes Shibboleth. Stránka je taktéž odkazována ze záznamu o zdroji (kliknutím na ikonu gryfa). Stránku lze snadno modifikovat v obou jazykových mutacích (en i cs) standardním mechanismem přes I18N. Související konfigurační direktivy:\\ configv2.php: * $SHOW_MENU_VZDALENY_PRISTUP_SHIB ==== Autentizace uživatelů přes Shibboleth v Portálu EIZ ==== V rámci samotného Portálu EIZ byla implementována autentizace uživatelů přes Shibboleth. Uživatel přihlášením získá komfortnější práci s shibbolizovanými elektronickými zdroji (není nutné se k nim opakovaně přihlašovat), zároveň i Portál samotný poskytuje dodatečné info o jednotlivých zdrojích na základě informací o přihlášeném uživateli. Prozatím je implementován mechanismus pro zjištování přístupnosti zdrojů na základě příslušnosti uživatele k daným částem univerzity (obvykle atributy affiliation, ou apod., lze konfigurovat) - zdroje přístupné jen z vybraných fakult (tuto informaci uchovává přímo Portál EIZ) jsou vůči informacím o uživateli kontrolovány a uživatel je pak upozorněn na to, že k daným zdrojům nemá přímý plný přístup. V seznamech zdrojů jsou nedostupné zdroje označeny šedou barvou (lze měnit přes CSS). Lze nastavit, aby se při přejetí myši přes takový zdroj uživateli zobrazilo dodatkové okno s informací o tom, proč je takový zdroj nedostupný (viz $SHIB_SHOW_JS_TOOLTIP_IN_LISTS). U detailních informací o zdroji se název ukazuje v bílém poli, po ním je text informující o nedostupnosti zdroje. Při přejetí myší přes tento text se uživateli ukáže okno s dodatečným vysvětlením, proč je daný zdroj nedostupný. Vzhled nadpisu a textu o nedostupnosti je možné měnit přes CSS, samotný text včetně doplňujících informací přes i18n. V budoucnu je možné implementovat další funkce (profily apod.). === Technická realizace === Portál pracuje jako SP na www serveru Apache s podporu mod_shib - tedy přímo s nativní knihovnou //Shibboleth SP 2//. V rámci implementace byla vyzkoušena i knihovna s//impleSAMLphp//, pro plnou funkčnost s touto knihovnou by však bylo nutné doprogramovat některé části kódu. Výsledný programový kód počítá s budoucím možným využitím //simpleSAMLphp// - knihovnu bude možné volit nastavením v konfiguračním souboru. Konfigurace výše zmíněných knihoven je podrobně popsána v jejich dokumentaci a není předmětem této zprávy. (V závěru zprávy je uvedená pouze část konfigurace modulu mod_shib serveru Apache, která se týká výlučně Portálu EIZ.) Implementace příslušných funkcí (modulu) v Portálu EIZ je řešena ve třídě //uzivatel// (soubor ''uzivatel_class.php''). Třída implementuje mechanismy pro přihlášení uživatele (na Portálu se využívá především //lazy session//) - kontruktory mapující atributy na objekt třídy //uzivatel// dle konfiguračního souboru a dále metody pro ztotožnění částí univerzity posílaných přes Shibboleth s částmi univerzity, se kterými pracuje Portál EIZ. Do části ''auth/'' bylo přidáno rozhraní pro editaci částí univerzity (umožňuje definovat jejich identifikátor posílaný IdP). Celý modul je možné poměrně do detailů ovládat přes příslušné konfigurační direktivy v souboru //shibboleth_config.php//. ==== Popis konfiguračních direktiv pro Shibboleth v Portálu EIZ ==== === configv2.php === ''$SHOW_MENU_VZDALENY_PRISTUP_SHIB = [true | false]''\\ Nastavuje má-li se v levém menu zobrazovat odkaz na nápovědu pro Shibboleth. === shibboleth_config.php === ''$ENABLE_SHIBBOLETH = [true | false]''\\ Základní nastavení, vypíná/zapíná podporu pro Shibboleth pro celý Portál EIZ. Je-li nastavena na false, pak jsou ostatní související direktivy ignorovány. Pro podporu indikace podpory Shibboleth u zdrojů musí být nastavena hodnota ''true''. ''$ENABLE_SHIBBOLETH_AUTH = [true | false]''\\ Zapíná podporu pro autentizaci uživatelů v Portálu EIZ. ''$SHIBBOLETH_LIBRARY = [‘native’ | ‘simpleSAMLphp’]''\\ Výběr použité knihovny. //simpleSAMLphp// zatím není plně podporována. ''$SHIB_AUTH_RESOURCE = ''\\ Pouze pro simpleSAMLphp. Nastavení //resource// pro použitou autentizaci. ''$SHIB_LOGIN_URL = ?target=''\\ ''$SHIB_LOGOUT_URL = ?return=''\\ URL pro login a logout pro nativní knihovnu Shibboleth SP 2. Předpokládá se ve tvaru s parametry //target// a //return//, kterou jsou dynamicky doplňovány podle stránky, na které se uživatel Portálu EIZ právě nachází. (Jako jméno serveru lze použít direktivu ''$MY_FQDN''). ''$SHIB_ATTR_* = ''\\ Mapování jednotlivých obvyklých atributů. (Doporučeno ponechat default nastavení.) ''$SHIB_DISPLAY_NAME = ''\\ Atribut, jehož hodnota bude použita jako jméno přihlášeného uživatele v levém okýnku s informací o přihlášení přes Shibboleth. ''$SHIB_DISPLAY_FULL_NAME = ''\\ ''$SHIB_DISPLAY_EMAIL = ''\\ ''$SHIB_DISPLAY_EPPN = ''\\ Atributy, jejichž hodnoty se použijí pro zobrazování na Portálu (především v části shib/ s informacemi o přihlášeném uživateli). ''$SHIB_AUTH_AUTHORIZATION_ATTRS = {, , …}''\\ Atributy, ve kterých jsou zasílány informace o příslušnosti uživatele k některé části univerzity (obvykle k fakultě apod.). Vůči hodnotám těchto atributů je pak kontrolována přístupnost zdroje. ''$SHIB_AUTH_AUTHORIZATION_DIV = ''\\ V rámci atributů z $SHIB_AUTH_AUTHORIZATION_ATTRS může být posíláno více hodnot v jednom řetězci. Tato direktiva definuje jejich oddělovací znak (obvykle středník). ''$SHIB_DISABLE_EZPROXY_LINK = [true | false]''\\ Nastavená na true vypíná odkaz na přihlášení přes EZproxy ve stručných seznamech zdrojů. Odkaz je vypnut jen tehdy, je-li u zdroje nastaven přístup přes Shibboleth, a nahrazen odkazem pro přístup přes Shibboleth. ''$SHIB_SHOW_JS_TOOLTIP_IN_LISTS = [true | false]''\\ Pokud je zapnuta a fungující autentizace přímo v Portálu EIZ, pak tato direktiva vypíná/zapíná v seznamech zdrojů funkci doplňkových informací u nedostuponých zdrojů. Informace (viz ''$txt_shib_nedostupny'' v //eizlibs/i18n/zdroj_strucne_cs*//) je zobrazena při javascriptové události //onmouseover// u zdrojů, které jsou pro přihlášeného uživatele nedostupné. ==== Konfigurace www serveru Apache ==== Protože auth/ část portálu využívá (prozatím) jiný přihlašovací mechanismus než Shibboleth, je nutné provést příslušné úpravy v konfiguračním souboru serveru Apache. Zároveň je nutné pro celý Portál EIZ nastavit přihlášení přes Shibboleth na lazy session. Authtype shibboleth ShibRequireSession Off Require shibboleth