====== Implementace federativní autentizace u EZproxy ======
Aplikace EZproxy (dodává [[http://www.oclc.org/ezproxy/|OCLC Inc.]]) je dodávána s podporou autentizace v prostředí Shibboleth/SAML. U EZproxy je vlastní implementace Service Providera.
Parametry pro autentizaci se nastavují v konfiguračním souboru. Po aktivaci přihlašování a nastavení mapování skupin uživatelů jsou k dispozici tyto funkce:
* Přihlášení uživatale v rámci jednotného přihlašování v prostředí Shibboleth/SAML
* Personalizovaný výpis dostupných el. zdrojů v rámci EZproxy portálu
* WAYFless odkazy na zpřístupňované el. zdroje
Implementace Shibboleth/SAML nepodporuje Single Logout.
Odkaz na konfiguraci Shibboleth na [[http://www.oclc.org/support/documentation/ezproxy/usr/shibboleth.htm|webu OCLC]].
Konfiguraci Shibboleth u EZproxy představuje Petr Novák na semináři //Shibboleth v praxi// v Národní technické knihovně - [[http://www.slideshare.net/pnovak99/ezproxy-a-shibboleth-seminar-v-ntk-201010|prezentace]], [[rtsp://xs.ruk.cuni.cz/~bojar/ntk5-264.mov|videozáznam]].
===== Před implementací =====
V EZproxy je nutno nakonfigurovat X.509 certifikát pro podepisování a šifrování komunikace s IdP.
Doporučené parametry:
délka klíče 2048 bitů
CN=login.hostname.domain.tld
Organizace=jméno organizace
Pro vygenerování certifikační žádosti je možno použít jak vestavěný generátor certifikátů EZproxy dostupný z webového admin rozhraní (http://login.hostname.domain.tld/ssl-new?shibboleth=on), tak např. nástroj openssl - [[http://www.oclc.org/support/documentation/ezproxy/cfg/ssl/default.htm|odkaz na návod OCLC]].
{{cs:tech:apps:ezproxy:ezp-spravacertifikatu.png|Správa certifikátů v EZproxy}}
Doporučuje se nasadit serverový certifikát CA TERENA (více viz. služby [[http://pki.cesnet.cz/cs/ch-server.html|CA CESNET]]).
Tento certifikát neslouží pro autentizaci meziserverového SSL spojení (EZproxy ↔ informační zdroj) – pro tento účel má být použit jiný, tzv. hvězdičkový certifikát, vystavený na CN=*.hostname.domain.tld
===== Metadata =====
EZproxy obsahuje generátor metadat.
Ukázka metadat - polotovar metadat generovaný EZproxy (odkaz Certificate Metadata dostupný v EZproxy na URL http://domain.tld/shibboleth):
MIIEhDCCA2ygAwIBAgIQA+Tm7A+sXd+JKGnXJsvwLTANBgkqhkiG9w0BAQUFADA2
MQswCQYDVQQGEwJOTDEPMA0GA1UEChMGVEVSRU5BMRYwFAYDVQQDEw1URVJFTkEg
U1NMIENBMB4XDTA5MTIyMjAwMDAwMFoXDTEyMTIyMTIzNTk1OVowVzELMAkGA1UE
BhMCQ1oxJTAjBgNVBAoTHENoYXJsZXMgVW5pdmVyc2l0eSBpbiBQcmFndWUxITAf
BgNVBAMTGGxvZ2luLmV6cHJveHkuaXMuY3VuaS5jejCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAKXw1e19JpiQeBt6S0NPMFiebt2XveiVoNPkJgfMdKbM
rD91zJxuLm7kxAUIp24iYlv5B/5avGUaIXNgfXXuL2uB7O74gom2fUQuZMIXbK+r
MTP0u/iXDVOdmDKfP2sxZcgDjBUwabVh0QxNERdj4AF8j/p9MyR2ifFs5ZA9Aybn
AceRs3iXutc0/qxdfEIPUKqxXh8DX5hfvpzLq1z/pqjZaDJ1kD9SroxRJkTt3MOW
Fv0TCu66dDpOmN5pNnpxtF5ELQHIO4nStgoktQoCi6xZ4Cw+eshyBdy/rzCuySDY
SrTBAG7UUUrQvfNNGr9MmEDdb8OxuQ4ojp5lMv5Z1CUCAwEAAaOCAWswggFnMB8G
A1UdIwQYMBaAFAy9k2gM896ro0lrKzdXR+qQ47ntMB0GA1UdDgQWBBQaQRwoYI9v
J01LmNiWQuBEAgQ9MTAOBgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAdBgNV
HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGAYDVR0gBBEwDzANBgsrBgEEAbIx
AQICHTA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3JsLnRjcy50ZXJlbmEub3Jn
L1RFUkVOQVNTTENBLmNybDBtBggrBgEFBQcBAQRhMF8wNQYIKwYBBQUHMAKGKWh0
dHA6Ly9jcnQudGNzLnRlcmVuYS5vcmcvVEVSRU5BU1NMQ0EuY3J0MCYGCCsGAQUF
BzABhhpodHRwOi8vb2NzcC50Y3MudGVyZW5hLm9yZzAjBgNVHREEHDAaghhsb2dp
bi5lenByb3h5LmlzLmN1bmkuY3owDQYJKoZIhvcNAQEFBQADggEBAJnUSqvJjiny
IYRggUFQP+o46sf8wf3WM7xDOncBwuS5y+RSiCvRfftIYrf9R7WnXEcnpIPmugrj
vgwoPyqQhcOu/alnp69ogjkS1b1mKKSKyUkhLIUsFsw+9Sh8iLEqboeWJVDhD3v3
OBAPbfWNZCXcTcXoIxk9PsiP0fGFO6EVw3tV9vGBTBYfUApiRDKOvO3xLPkSsmJh
Lyj3jXth52Fp/1wHmZ5q4pR4gw83C1fla3q5ylMvksmlr4tLaCR0NX5fZzD2fCnG
gbjp6yF2aheE4G+/ouASbZy6fijs58IAHczfB36XXBe7zcUS8VnW4y88WsDCH+Jv
2Dyuki1c8zY=
První tag je tzv. EntityDescriptor – je nutno doplnit entityID jako je v tomto příkladu:
EntityID je nutno zkonzultovat se správcem IdP v instituci.
{{cs:tech:apps:ezproxy:manageshibb.png|Manage Shibboleth – webové rozhraní EZproxy pro správu Shibbolethu}}
Webové rozhraní obsahuje Assertion Consumer Service URL, která se následně využije v metadatech EZproxy.
===== Provoz mimo federaci =====
Pro testovací účely není nutné zapojit EZproxy do federace.
Metadatový soubor v tomto případě umístíme do adresáře s binárním souborem ezproxy.
Součástí tohoto metadatového souboru musí být metadata příslušného Identity Provideru.
===== Nastavení Shibbolethu v EZproxy =====
config.txt (ezproxy.cfg – v pre 5.x verzích)
Formát konfigurace:
ShibbolethMetadata \
-EntityID=EZproxyEntityID \
-File=MetadataFile \
-Cert=EZproxyCertNumber \
-URL=MetadataURL
Příklad EZproxy UK
ShibbolethMetadata \
-EntityID=https://login.ezproxy.is.cuni.cz/sp/shibboleth \
-File=MetadataFile \
-Cert=1 \
-URL=http://www.eduid.cz/docs/eduid/metadata/eduid-metadata.xml
===== Nastavení Shibbolethu jako autentizačního způsobu v EZproxy =====
Soubor ''user.txt'' udržuje informace o lokálních uživatelích EZproxy + definuje další autentizační mechanismy.
::Shibboleth
If login:auth eq "shibboleth"; IDP20 https://cas.cuni.cz/idp/shibboleth
/Shibboleth
Popsaná konfigurace nedává možnost výběru IdP (vynechá WAYF). Pokud požadujeme WAYF, musíme upravit – doplnit URL Directory Service:
::Shibboleth
If login:auth eq "shibboleth"; DS20 https://ds.eduid.cz/wayf.php
/Shibboleth
===== Úprava přihlašovací stránky EZproxy =====
Přihlaste k EZproxy se pomocí Shibboleth
Podle nastavení user.txt se zobrazí přímo přihlášení k žádanému IdP nebo se zobrazí služba výběru IdP (WAYF / DS služba).
===== WAYFless linkování =====
WAYFless linkování na zdroj – odkaz si generuje EZproxy, příklad = SpringerLink:
https://login.domain.tld/login?auth=shibboleth&url=http://ebooks.springerlink.com
===== Skupiny v EZproxy =====
Používá se pro definování přístupu dle skupin, typicky: fakulty, základní součásti, pracoviště, čtenáři, zaměstnanci – s rozdílným portfoliem zpřístupněných předplacených zdrojů.
Definice příkazem Group FACULTY1 v ''config.txt'' předcházejícím vlastní konfiguraci zdroje.
Lze kombinovat Group FACULTY1+FACULTY2 ...
Na skupiny lze namapovat afiliace předané prostřednictvím Shibbolethu. U EZproxy k tomu slouží pravidla definovaná v souboru ''shibuser.txt''.
===== Shibuser.txt – konfigurace procesu přihlašování =====
Obsah shibuser.txt
MsgAuth
ukládá autentizační hlášky do messages.txt, po odladění možno vypnout
Set login:loguser=auth:eduPersonTargetedID
stanoví, že EZproxy definuje předané eduPersonTargetedID jako přihlašovací jméno
If !(auth:issuer eq "https://cas.cuni.cz/idp/shibboleth"); \
Deny unaffiliated.html
test zda uživatel přichází od požadovaného IdP, pokud ne, je mu přístup odepřen
Group NULL
inicializace skupin
If Any(auth:eduPersonAffiliation, "staff"); Group +Staff
otestujeme základní skupiny uživatelů (staff, student, ...) a přiřadíme ke skupině
IfNoGroups {
If auth:eduPersonAffiliation eq "interrupted-student";
Deny deny_interrupted.html
Deny deny_other.html
}
pokud příchozí uživatel nespadá do povolené skupiny, zamítneme přístup
Group +Default
definujeme skupinu Default všem, kdo prošli až sem
If Any(auth:eduPersonEntitlement, "urn:uni:affiliation:staff@domain.ltd");
Group +FACULTY1
testujeme a přiřazujeme skupiny dle fakult, číselníků kateder, studijních programů, oborů a dalších atributů (přístup lze definovat až na úroveň jedince)
===== Ladění =====
Průběh autentizační session je k dispozici ve webovém rozhraní:
http://domain.tld/messages?last=100
===== Konfigurace s SFX =====
Požadovaný scénář: Při připojení k elektronickému informačnímu zdroji přes EZproxy server z počítače, jenž je připojen k počítačové síti instituce (přímo či přes VPN) a jehož IP adresa spadá do definovaného rozsahu IP adres instituce, není požadována autentizace. Při připojení k elektronickému informačnímu zdroji přes EZproxy server z počítače, jenž není připojen k počítačové síti instituce a jehož IP adresa nespadá do definovaného rozsahu IP adres instituce, je požadována autentizace.
Řešení:
Ke konfiguraci každého zdroje (většinou tvořenou příkazy TITLE, URL, DOMAIN, HOST aj) v souboru config.txt je nutno přidat rozsah IP adres instituce (nebo části instituce, např. fakulty). Tento rozsah se přidává 2x - před a za konfiguraci zdroje.
Příklad:
AutoLoginIP 192.168.0.1-192.168.0.254
Title Databáze XY
URL http://www.databaze.com
D databaze.com
IncludeIP 192.168.0.1-192.168.0.254
IP adresy mohou být jak privátní, tak veřejné. Rozsahy je možné sdružovat (zápis vždy na nový řádek), pokud má instituce více rozsahů. Páry příkazů AutoLoginIP a IncludeIP se musí nacházet vždy v rámci jedné skupiny a mohou definovat přístup k více zdrojům. V EZproxy logu se místo uživatelského jména (eduPersonTargetedID, pokud je nastaveno) zobrazí uživatelské jméno “auto” a jako skupina (skupiny) uživatele se použije skupina, v níž je umístěna konfigurace zdroje.
[[https://www.eduid.cz/wiki/eduid/admins/howto/deploy/sfx/index|Konfigurace na straně SFX serveru]].
===== Varování k certifikace rollover =====
Při certifikace rollover polovina přihlášení u EZproxy končí s chybou - EZproxy nepodporuje korektně certificate rollover.