cs:tech:apps:pez

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 simpleSAMLphp, 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 = <resource>
Pouze pro simpleSAMLphp. Nastavení resource pro použitou autentizaci.

$SHIB_LOGIN_URL = <url>?target=
$SHIB_LOGOUT_URL = <url>?return=
URL pro login a logout pro nativní knihovnu Shibboleth SP 2. Předpokládá se ve tvaru <url> 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_* = <atribut>
Mapování jednotlivých obvyklých atributů. (Doporučeno ponechat default nastavení.)

$SHIB_DISPLAY_NAME = <atribut>
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 = <atribut>
$SHIB_DISPLAY_EMAIL = <atribut>
$SHIB_DISPLAY_EPPN = <atribut>
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 = {<atribut1>, <atribut2>, …}
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 = <znak_ASCII>
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.

<LocationMatch “/(?!auth/)”>
	Authtype shibboleth
	ShibRequireSession Off
	Require shibboleth
</Location>
Poslední úprava:: 2021/04/16 17:09