====== Shibboleth IdP ====== **Na této stránce se nachází návod, jak do linuxové distribuce Debian nainstalovat Shibboleth IdP. Před instalací musíme zprovoznit [[jetty]].** **Konec podpory pro Shibboleth IdP řady 4 je k 1. 9. 2024. Tento návod se tedy týká již nové řady 5.** V případě potíží nebo nejasností se neváhejte obrátit na [[info@eduid.cz]]. ---- ===== Instalace ===== Zdrojové kódy stáhneme ručně [[https://shibboleth.net/downloads/identity-provider/5.0.0/|ze stránky projektu]] a nahrajeme na server do adresáře ''/opt'' anebo použijeme program //wget// následujícím způsobem. __Následně nezapomeneme ověřit SHA256 otisk a GPG podpis!__ # Stažení zdrojového kódu Shibboleth IdP wget -P /opt \ https://shibboleth.net/downloads/identity-provider/5.0.0/shibboleth-identity-provider-5.0.0.tar.gz \ https://shibboleth.net/downloads/identity-provider/5.0.0/shibboleth-identity-provider-5.0.0.tar.gz.asc \ https://shibboleth.net/downloads/identity-provider/5.0.0/shibboleth-identity-provider-5.0.0.tar.gz.sha256 # Přepnutí do adresáře /opt cd /opt # Kontrola SHA256 otisku sha256sum -c shibboleth-identity-provider-5.0.0.tar.gz.sha256 # Kontrola GPG podpisu gpg --verify shibboleth-identity-provider-5.0.0.tar.gz.asc Nyní přistoupíme k samotné instalaci. # Instalace Shibboleth IdP tar -xzf shibboleth-identity-provider-5.0.0.tar.gz cd shibboleth-identity-provider-5.0.0/ ./bin/install.sh Po spuštění instalačního skriptu: - potvrdíme zdrojový instalační adresář, - potvrdíme cílový instalační adresář, - vyplníme hostname serveru (pokud není vyplněn správně), - potvrdíme entityID, - zadáme scope organizace (pokud není vyplněn správně). Zde je vyobrazen průběh instalačního skriptu ''install.sh''. Installation Directory: [/opt/shibboleth-idp] ? INFO - New Install. Version: 5.0.0 Host Name: [idp.example.org] ? INFO - Creating idp-signing, CN = idp.example.org URI = https://idp.example.org/idp/shibboleth, keySize=3072 INFO - Creating idp-encryption, CN = idp.example.org URI = https://idp.example.org/idp/shibboleth, keySize=3072 INFO - Creating backchannel keystore, CN = idp.example.org URI = https://idp.example.org/idp/shibboleth, keySize=3072 INFO - Creating Sealer KeyStore INFO - No existing versioning property, initializing... SAML EntityID: [https://idp.example.org/idp/shibboleth] ? Attribute Scope: [example.org] ? INFO - Initializing OpenSAML using the Java Services API INFO - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2001/04/xmlenc#ripemd160 INFO - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160 INFO - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160 INFO - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2007/05/xmldsig-more#sha1-rsa-MGF1 INFO - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2007/05/xmldsig-more#sha224-rsa-MGF1 INFO - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2007/05/xmldsig-more#sha256-rsa-MGF1 INFO - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2007/05/xmldsig-more#sha384-rsa-MGF1 INFO - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2007/05/xmldsig-more#sha3-224-rsa-MGF1 INFO - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2007/05/xmldsig-more#sha3-256-rsa-MGF1 INFO - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2007/05/xmldsig-more#sha3-384-rsa-MGF1 INFO - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2007/05/xmldsig-more#sha3-512-rsa-MGF1 INFO - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2007/05/xmldsig-more#sha512-rsa-MGF1 INFO - Creating Metadata to /opt/shibboleth-idp/metadata/idp-metadata.xml INFO - Rebuilding /opt/shibboleth-idp/war/idp.war, Version 5.0.0 INFO - Initial populate from /opt/shibboleth-idp/dist/webapp to /opt/shibboleth-idp/webpapp.tmp INFO - Overlay from /opt/shibboleth-idp/edit-webapp to /opt/shibboleth-idp/webpapp.tmp INFO - Creating war file /opt/shibboleth-idp/war/idp.war Tím je instalace hotová a přesuneme se ke konfiguraci. ===== Konfigurace ===== Konfigurace může být dost různorodá a vše závisí na tom, zda-li chceme IdP používat pouze pro přístup ke službám federace anebo ho chceme používat i pro přístup k našim interním službám. **Konfigurace uvedená v tomto návodu slouží jako naprostý základ, na kterém lze do budoucna stavět. Není možné sepsat specifičtější návod, protože Shibboleth IdP je velmi komplexní software s nepředstavitelnou škálou možností.** ==== idp.properties ==== V souboru ''/opt/shibboleth-idp/conf/idp.properties'' nastavíme podporu pro tzv. //consent// (dříve //uApprove//), což je ukládání souhlasů s vydáváním uživatelských informací (atributů) do databáze. Dále zde máme možnost ovlivnit, zda se budou používat cookies anebo lokální úložiště HTML ("HTML Local Storage"). A v neposlední řadě zde můžeme ovlivnit výchozí šifrovací algoritmus pro šifrování XML. IdP řady 2 uměla využívat pouze cookies. IdP řady 3 přinesla možnost používání lokálního úložiště, ale tato volba byla standardně vypnuta. V IdP řady 4 je tato volba standardně zapnuta, takže pokud instalujete novou verzi (myšleno neaktualizujete stávající IdP V3 na novou verzi), bude povoleno použití lokálního úložiště, pokud ho prohlížeč podporuje. **Povolení lokálního HTML úložiště s sebou nese dopad na vzhled během přihlašování (probliknutí stránky) a vyžaduje v prohlížeči zapnutý JavaScript!** Chcete-li zachovat chování jako v předchozích verzích IdP, musíte volbu //idp.storage.htmlLocalStorage// nastavit na hodnotu //false//. Bližší informace naleznete v oficiální [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199509576/StorageConfiguration#StorageConfiguration-ClientStorageService|dokumentaci]]. Od Shibboleth IdP 4.0.0 se jako výchozí šifrovací algoritmus pro šifrování XML používá [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199501202/GCMEncryption|AES-GCM]]. Starší verze IdP používaly AES-CBC. Nový algoritmus AES-GCM podporují aktuální operační systémy, na kterých je provozována aktuální verze Shibboleth SP anebo SimpleSAMLphp 1.19.0+. Nicméně ostatní implementace SAML protokolu tento protokol nepodporují a nebudou tedy fungovat. Existuje více způsobů, jak k tomuto problému přistoupit v závislosti na potřebách konkrétního IdP. Ten nejvhodnější je samozřejmě tlačit na ostatní služby (a jimi používané implementace), aby podporu pro nový algoritmus zařadili. Nejjednodušší způsob je zakomentovat volbu //idp.encryption.config//, ale **správné řešení naleznete v [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199501202/GCMEncryption|dokumentaci]] po jejím přečtení a pochopení**. # Otevřeme konfigurační soubor idp.properties vim /opt/shibboleth-idp/conf/idp.properties Nastavíme ''idp.consent.StorageService'' na hodnotu ''shibboleth.JPAStorageService'' a případně i ''idp.storage.htmlLocalStorage'' na ''false''. V případě, že potřebujeme, aby IdP komunikovalo i se službami nepodporující šifrovací algoritmus AES-GCM, můžeme **po přečtení a pochopení [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199501202/GCMEncryption|dokumentace]]** zakomentovat ''idp.encryption.config'', **pokud opravdu chceme vypnout a zakázat nový způsob bezpečného šifrování**: idp.consent.StorageService = shibboleth.JPAStorageService idp.storage.htmlLocalStorage = false #idp.encryption.config=shibboleth.EncryptionConfiguration.GCM ==== ldap.properties ==== V souboru ''/opt/shibboleth-idp/conf/ldap.properties'' nastavíme konektor do LDAP serveru, pomocí něhož budeme získávat uživatelské atributy. # Otevřeme konfigurační soubor ldap.properties vim /opt/shibboleth-idp/conf/ldap.properties Důležité jsou především následující volby: idp.authn.LDAP.authenticator = bindSearchAuthenticator idp.authn.LDAP.ldapURL = ldaps://ldap.example.org:636 idp.authn.LDAP.useStartTLS = false idp.authn.LDAP.sslConfig = certificateTrust idp.authn.LDAP.trustCertificates = %{idp.home}/credentials/ldap-server.crt idp.authn.LDAP.baseDN = ou=people,dc=example,dc=org idp.authn.LDAP.subtreeSearch = true idp.authn.LDAP.bindDN = uid=shibboleth,ou=users,dc=example,dc=org První konfigurační parametr ''idp.authn.LDAP.authenticator'' určuje, jak se bude přistupovat k LDAP serveru. Výchozí (zakomentovaná) hodnota je //anonSearchAuthenticator//, takže se k LDAPu přistupuje anonymně. My však chceme, aby se dotazování LDAP serveru provádělo až po přihlášení, je potřeba nastavit volbu na hodnotu //bindSearchAuthenticator//. Volba ''idp.authn.LDAP.ldapURL'' určuje, ke kterému LDAP serveru se bude Shibboleth připojovat. Ve výše uvedeném příkladu se připojuje pomocí zabezpečeného SSL (ldaps://) na stadardním portu ''636''. **V ldapURL nesmíme uvést koncové lomítko, např. ''[[ldaps://ldap.example.org:636/]]'', jinak nebude Shibboleth fungovat a v logu najdeme ''java.lang.NumberFormatException: For input string: "636/"''.** Konfigurační volba ''idp.authn.LDAP.useStartTLS'' určuje, jestli budeme používat StartTLS. Následující volba ''idp.authn.LDAP.trustCertificates'' udává cestu ke kořenovému certifikátu CA, která vydala SSL certifikát pro LDAP server ''ldap.example.org''. **Je nutné nezapomenout nakopírovat soubor ''ldap-server.crt'' na odpovídající místo!** Volba ''idp.authn.LDAP.baseDN'' určuje tzv. "base DN" v LDAPu. Volby ''idp.authn.LDAP.bindDN'' určuje uživatelské jméno, které se použije při přístupu k LDAP serveru pro získání uživatelských atributů. ==== secrets.properties ==== V souboru ''/opt/shibboleth-idp/credentials/secrets.properties'', který nově existuje v Shibboleth IdP od verze 4.0.0, nastavíme heslo k LDAP serveru a sůl pro //persistentní NameID identifikátor// / atribut //eduPersonTargetedID//, kterou si vygenerujeme. # Vygenerování soli openssl rand -base64 36 # Otevřeme konfigurační soubor secrets.properties vim /opt/shibboleth-idp/credentials/secrets.properties Volba ''idp.authn.LDAP.bindDNCredential'' obsahuje heslo, které se použije při přístupu k LDAPu. Heslo je pro uživatelský účet definovaný v ''idp.authn.LDAP.bindDN'' v ''/opt/shibboleth-idp/conf/ldap.properties'' souboru. Volba ''idp.persistentId.salt'' definuje sůl pro persistentní NameID identifikátor, kterou jsme si právě vygenerovali. Nikdy neměňte hodnotu v ''idp.persistentId.salt'', pokud již máte v současné produkční verzi IdP nějakou sůl vygenerovanou. idp.authn.LDAP.bindDNCredential = ___HESLO_PRO_BIND_K_LDAP_SERVERU___ idp.persistentId.salt = ___SŮL_PRO_GENEROVÁNÍ_IDENTIFIKÁTORŮ___ ==== metadata-providers.xml ==== V konfiguračním souboru ''/opt/shibboleth-idp/conf/metadata-providers.xml'' se nastavují zdroje metadat. V následujícím příkladu je jako zdroj metadat použita federace //eduID.cz// i mezinárodní federace //eduGAIN//. Metadata se stáhnou a lokálně uloží. # Otevřeme konfigurační soubor metadata-providers.xml vim /opt/shibboleth-idp/conf/metadata-providers.xml Blok kódu výše, tedy element ____ se všemi atributy a potomky, je nutné umístit do //kořenového// elementu ____ v konfiguračním souboru //metadata-providers.xml//! Sice to působí podivně, ale bez toho nebude XML dokument validní a konfigurace nebude fungovat. Pokud by vás zajímal význam atributů v elementu '''', naleznete vše [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199506865/FileBackedHTTPMetadataProvider|v oficiální dokumentaci]]. Vše okolo '''' elementu naleznete také [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199507005/MetadataFilterConfiguration|v oficiální dokumentaci]]. Pokud jsme se v sekci [[#idpproperties|idp.properties]] správně rozhodli využívat primárně nový bezpečnější způsob šifrování pomocí AES-GCM, je velice vhodné vytvořit sekci pro služby, které toto šifrování nepodporují a povolit u nich starší způsob šifrování pomocí AES-CBC, jinak nebude možné se k nim přihlásit. Níže uvedený seznam výjimek (složený z entityID služeb podporujících pouze AES-CBC) zajistí, že IdP bude primárně používat nové šifrování a staré pouze pro vyjmenované služby. Seznam níže uvedených služeb by měl být kompletní. Pokud byste narazili na problém, oznamte ho, prosím, na [[info@eduid.cz]]. Jelikož je z kapacitních důvodů velice komplikované otestovat podporu pro AES-GCM, tak pro eduGAIN je zvolen jiný přístup. Primárně se používá AES-CBC, pokud služba v metadatech sama neuvádí podporu pro AES-GCM. Bližší vysvětlení je nad rámec tohoto návodu, proto je zde uvedeno pouze aktuálně nejvhodnější řešení k 12. 5. 2020. ccm.net.cvut.cz https://adfs-ext.w2lan.cesnet.cz/adfs/services/trust https://adfs.w2lan.cesnet.cz/adfs/services/trust https://auth.eidas.cesnet.cz/sp https://camelot.lf2.cuni.cz/shibboleth https://cawi.fsv.cuni.cz/simplesaml/module.php/saml/sp/metadata.php/default-sp https://collector-metacentrum.liberouter.org/simplesaml/module.php/saml/sp/metadata.php/collector https://cz-online.aliveplatform.com/simplesaml/module.php/saml/sp/metadata.php/cz-online.aliveplatform.com https://digi.law.muni.cz https://digitool.is.cuni.cz/shibboleth https://dspace.vsb.cz/sp/shibboleth https://dspace2.zcu.cz/dspace https://edu.ista.tacr.cz/ISTA https://filesender.cesnet.cz/saml/sp https://gc3.cesnet.cz/shibboleth https://index.bbmri.cz/shibboleth https://iptel.cesnet.cz/shibboleth/cesnet-internal/sp https://ista.tacr.cz/ISTA https://itmulti.cz/simplesaml/module.php/saml/sp/metadata.php/portal4 https://journals.bmj.com/shibboleth https://login.bbmri-eric.eu/proxy/ https://login.ceitec.cz/proxy/ https://login.elixir-czech.org/proxy/ https://login.ezproxy.is.cuni.cz/sp/shibboleth https://login.ezproxy.uochb.cas.cz:2443/sp/shibboleth https://login.ezproxy.vscht.cz/sp/shibboleth https://mefanet-motol.cuni.cz/sp/shibboleth https://meta.cesnet.cz/sp/shibboleth https://mooc.cuni.cz/sp/shibboleth https://nfsmon.ics.muni.cz/ https://odevzdej.cz/shibboleth/ https://orca.ruk.cuni.cz/shibboleth https://pentest.cesnet.cz/sp/shibboleth https://portal.lf3.cuni.cz/shibboleth/sp https://postudium.cz/auth/saml2/sp/metadata.php https://proxy.lifescienceid.org/metadata/backend.xml https://repozitar.cz/shibboleth/ https://seth.ics.muni.cz/shibboleth https://softweco.cz/shibboleth-sp https://su-dev.fit.vutbr.cz/kis https://su-int.fit.vutbr.cz/kis https://teleinform.cz/simplesaml/module.php/saml/sp/metadata.php/portal1 https://telekomunikace-tit.cz/simplesaml/module.php/saml/sp/metadata.php/portal3 https://test.ista.tacr.cz/ISTA https://thalamoss-data.ics.muni.cz/shibboleth https://theses.cz/shibboleth/ https://vut-vsb.cz/simplesaml/module.php/saml/sp/metadata.php/portal2 https://vvvd.vsb.cz/shibboleth https://wikisofia.cz/shibboleth https://www.bookport.cz/ https://www.cistbrno.cz/ https://www.citacepro.com/simplesaml/module.php/saml/sp/metadata.php/eduid-sp https://www.eunis.cz/simplesamlphp/module.php/saml/sp/metadata.php/eunis https://www.jib.cz/shibboleth https://www.levna-knihovna.cz/simplesamlphp/module.php/saml/sp/metadata.php/default-sp https://www.liberouter.org/simplesamlphp/module.php/saml/sp/metadata.php/liberouter https://www.mecenat.eu/sp https://www.vutbr.cz/SSO/saml2/sp shibboleth.Conditions.TRUE Metadata federací //eduID.cz// i //eduGAIN// jsou podepsána. **Důrazně doporučujeme tedy jejich autenticitu ověřovat pomocí kontroly podpisu!** Veřejný klíč je k dispozici na adrese https://www.eduid.cz/docs/eduid/metadata/metadata.eduid.cz.crt.pem. Stáhneme si ho a uložíme do adresáře ''/opt/shibboleth-idp/credentials''. # Stažení veřejného klíče metadata.eduid.cz.crt.pem wget -P /opt/shibboleth-idp/credentials \ https://www.eduid.cz/docs/eduid/metadata/metadata.eduid.cz.crt.pem ==== attribute-resolver.xml ==== Chceme-li si konfigurační soubor ''/opt/shibboleth-idp/conf/attribute-resolver.xml'' nakonfigurovat od začátku a naprosto sami, využijeme k tomu soubor ''/opt/shibboleth-idp/conf/examples/attribute-resolver-ldap.xml'', který v sobě zahrnuje i konektor do LDAP serveru. Doporučujeme však vyjít z připraveného souboru na adrese [[https://www.eduid.cz/shibboleth-idp/attribute-resolver.xml]]. [[cs:tech:attributes]] naleznete v dokumentaci. Podle tohoto seznamu si ''attribute-resolver.xml'' můžeme upravit. **Návod v následujících krocích předpokládá, že jsme použili připravenou šablonu!** Navíc se předpokládá, že pro generování persistentního NameID identifikátoru používáte atribut ''uid''. Tento SAML atribut nesmí mít v ''attribute-resolver.xml'' XML atribut //dependencyOnly="true"//, jinak nebude pro generování persistentního NameID k dispozici a persistentní NameID se nevygeneruje. **Některé služby bez persistentního NameID nebudou fungovat!** # Stažení attribute-resolver.xml wget -O /opt/shibboleth-idp/conf/attribute-resolver.xml \ https://www.eduid.cz/shibboleth-idp/attribute-resolver.xml Potřebujeme-li si definovat své vlastní atributy, pak bližší informace ke konfiguraci nalezneme [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199502864/AttributeResolverConfiguration|v oficiální dokumentaci]]. Budete-li sledovat logy (//idp-process.log// a //idp-warn.log//), objevíte tam varování týkající se zastaralého "SAML2NameID". To můžete ignorovat. ==== cesnetAttributes.xml ==== Sdružení CESNET definuje pro federaci eduID.cz několik atributů, které jsou definovány právě v souboru ''cesnetAttributes.xml'', čímž se zjednoduší konfigurační soubor ''attribute-resolver.xml''. Doporučujeme tedy tento soubor stáhnout z našeho weby. # Stažení cesnetAttributes.xml wget -O /opt/shibboleth-idp/conf/attributes/cesnetAttributes.xml \ https://www.eduid.cz/shibboleth-idp/cesnetAttributes.xml ==== default-rules.xml ==== Aby si Shibboleth IdP načetl soubor ''cesnetAttributes.xml'', který obsahuje definice atributů pro federaci eduID.cz (vizte výše), je nutné přidat jeho načtení do souboru ''default-rules.xml'' ideálně ihned za import ostatních konfiguračních souborů s atributy: Pro jednoduchost je možné tento konfigurační soubor stáhnout z našeho webu. # Stažení default-rules.xml wget -O /opt/shibboleth-idp/conf/attributes/default-rules.xml \ https://www.eduid.cz/shibboleth-idp/default-rules.xml ==== eduPerson.xml ==== Aby se v českém prostředí (závisí na nastavení webového prohlížeče) v přehledu uvolňovaných atributů zobrazovaly české popisy atributů z rodiny "eduPerson", je nutné doplnit překlady do souboru ''eduPerson.xml''. To lze nejsnadněji udělat tak, že si tento soubor stáhnete z našeho webu. # Stažení eduPerson.xml wget -O /opt/shibboleth-idp/conf/attributes/eduPerson.xml \ https://www.eduid.cz/shibboleth-idp/eduPerson.xml ==== inetOrgPerson.xml ==== Aby se v českém prostředí (závisí na nastavení webového prohlížeče) v přehledu uvolňovaných atributů zobrazovaly české popisy atributů z rodiny "inetOrgPerson", je nutné doplnit překlady do souboru ''inetOrgPerson.xml''. To lze nejsnadněji udělat tak, že si tento soubor stáhnete z našeho webu. # Stažení inetOrgPerson.xml wget -O /opt/shibboleth-idp/conf/attributes/inetOrgPerson.xml \ https://www.eduid.cz/shibboleth-idp/inetOrgPerson.xml ==== attribute-filter.xml ==== Mít definované atributy z předchozího kroku nestačí. Ještě je potřeba nadefinovat, které atributy budeme vydávat a komu je budeme vydávat. To se nastavuje v konfiguračním souboru ''/opt/shibboleth-idp/conf/attribute-filter.xml''. Z důvodu zjednodušení doporučujeme uvolňovat atributy dle našeho doporučení na adrese [[https://www.eduid.cz/shibboleth-idp/attribute-filter.xml]]. Filtr uvolňuje atributy podle kategorií entit [[cs:tech:categories:rs]], [[cs:tech:categories:coco]] a dále do federací [[cs:tech:summary|eduID.cz]] a [[cs:tech:edugain|eduGAIN]]. wget -O /opt/shibboleth-idp/conf/attribute-filter.xml \ https://www.eduid.cz/shibboleth-idp/attribute-filter.xml Chcete-li si nastavit uvolňování atributů dle svého, tak bližší informace naleznete [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199501794/AttributeFilterConfiguration|v oficiální dokumentaci]]. ==== idp-metadata.xml ==== Soubor ''/opt/shibboleth-idp/metadata/idp-metadata.xml'' obsahuje metadata IdP, která je potřeba po instalaci doplnit o další informace jako například element '''', který se zapisuje do "rozšíření" (element ''''), např. za '''': # Otevřeme konfigurační soubor idp-metadata.xml vim /opt/shibboleth-idp/metadata/idp-metadata.xml example.org EXAMPLE EXAMPLE EXAMPLE's Identity Provider. Poskytovatel identity pro EXAMPLE. http://www.example.org/en/ http://www.example.org/cs/ https://img.example.org/logo-200.gif Dále je nutno doplnit název organizace v elementu '''' (patří do elementu '''' za element ''''): EXAMPLE, a. l. e. EXAMPLE, z. s. p. o. EXAMPLE EXAMPLE http://www.example.org/en/ http://www.example.org/cs/ Chybět nesmí ani kontaktní osoby v elementu '''' (opět v elementu '''' za element ''''): Kryštof Šáteček mailto:krystof.satecek@example.org ==== global.xml ==== Nyní je potřeba v souboru ''global.xml'' definovat některé "y". Tato konfigurace zajistí správnou konektivitu na //MariaDB// databázi pro ukládání persistentních identifikátorů a zároveň pro ukládání souhlasů s vydáváním atributů (tzv. uApprove). # Úpravy v konfiguračním souboru global.xml vim /opt/shibboleth-idp/conf/global.xml V prvním bloku kódu nahradíme ''___SILNE_HESLO___'' heslem pro uživatele //shibboleth// k databázi //shibboleth//. ==== saml-nameid.properties ==== Dále musíme provést úpravy v konfiguračním souboru ''saml-nameid.properties''. # Úpravy v konfiguračním souboru saml-nameid.properties vim /opt/shibboleth-idp/conf/saml-nameid.properties Zde definujeme odkazy na výše definované "y", dále atribut, který se bude pro výpočet persistentního identifikátoru používat (''uid''). idp.persistentId.sourceAttribute = uid # Nové IdP (BASE32) idp.persistentId.encoding = BASE32 # Migrované IdP (BASE64) #idp.persistentId.encoding = BASE64 idp.persistentId.generator = shibboleth.StoredPersistentIdGenerator idp.persistentId.dataSource = shibboleth.MySQLDataSource ==== saml-nameid.xml ==== Podpora persistentních identifikátorů je ještě potřeba zapnout v konfiguračním souboru ''saml-nameid.xml''. # Úpravy v konfiguračním souboru saml-nameid.xml vim /opt/shibboleth-idp/conf/saml-nameid.xml Stačí odkomentovat následující řádek, který je ve výchozí konfiguraci po instalaci IdP zakomentovaný. ==== subject-c14n.xml ==== Teď ještě zbývá úprava v souboru ''subject-c14n.xml''. # Úpravy v konfiguračním souboru subject-c14n.xml vim /opt/shibboleth-idp/conf/c14n/subject-c14n.xml Odkomentujeme tedy následující řádek: ==== messages_cs.properties ==== Ve výchozím nastavení IdP s uživatelem přes webový prohlížeč komunikuje v angličtině. Pokud chceme, aby texty na stránkách IdP byly v češtině, musíme do IdP dodat české překlady. Ty jsou dostupné na webu [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199501275/MessagesTranslation|Shibbolethu]] a jsou pravidelně udržovány. (Pokud byste našli chybu nebo uměli dodat lepší překlad, na stránce najdete i postup, jak k překladům přispět.) Jazyk, který bude použit, se určuje na základě nastavení webového prohlížeče. Takže pokud má uživatel v prohlížeči preferovaný jazyk angličtinu, IdP bude všechny texty vypisovat v angličtině. # Stažení českých překladů wget https://shibboleth.atlassian.net/wiki/download/attachments/1265631751/messages_cs.properties \ -O /opt/shibboleth-idp/messages/messages_cs.properties ===== Spuštění ===== Nyní, když máme IdP nakonfigurováno, opravíme práva v adresáři ''/opt/shibboleth-idp'': # Úprava práv chown jetty /opt/shibboleth-idp/{logs,metadata} chgrp -R jetty /opt/shibboleth-idp/{conf,credentials} chmod -R g+r /opt/shibboleth-idp/conf chmod 750 /opt/shibboleth-idp/credentials chmod 640 /opt/shibboleth-idp/credentials/* V systemd musíme Jetty povolit přístup pro zápis do adresářů s logy a metadaty. # Úprava služby jetty11 v systemd systemctl edit jetty11 Nastavení práv pro záspis do adresářů ''/opt/shibboleth-idp/{logs,metadata}'': [Service] ReadWritePaths=/opt/shibboleth-idp/logs/ ReadWritePaths=/opt/shibboleth-idp/metadata/ Přidání doplňků a potvrdíme dvakrát pomocí y a enter. /opt/shibboleth-idp/bin/plugin.sh -I net.shibboleth.plugin.storage.jdbc /opt/shibboleth-idp/bin/plugin.sh -I net.shibboleth.idp.plugin.nashorn Zbývá jen znovu načíst konfiguraci pro službu Jetty a tu následně restartovat: # Restart Jetty systemctl daemon-reload systemctl restart jetty11 Nyní, jakmile Jetty po chvilce nastartuje, můžeme vyzkoušet, zda IdP v pořádku běží: # Zobrazení stavu IdP /opt/shibboleth-idp/bin/status.sh Pokud IdP korektně běží, uvidíte následující: ### Operating Environment Information operating_system: Linux operating_system_version: 6.1.0-17-amd64 operating_system_architecture: amd64 jdk_version: 17.0.9 available_cores: 1 used_memory: 551 MB maximum_memory: 1500 MB ### Identity Provider Information idp_version: 5.0.0 start_time: 2024-01-08T13:37:39.849Z current_time: 2024-01-08T13:37:41.870585878Z uptime: PT2.021S enabled modules: idp.Core (Core IdP Functions (Required)) idp.CommandLine (Command Line Scripts) idp.EditWebApp (Overlay Tree for WAR Build) idp.authn.Password (Password Authentication) idp.admin.Hello (Hello World) installed plugins: net.shibboleth.idp.plugin.nashorn Version 2.0.0 net.shibboleth.plugin.storage.jdbc Version 2.0.0 service: shibboleth.LoggingService last successful reload attempt: 2024-01-08T13:36:14.071738505Z last reload attempt: 2024-01-08T13:36:14.071738505Z service: shibboleth.AttributeFilterService last successful reload attempt: 2024-01-08T13:36:39.855671743Z last reload attempt: 2024-01-08T13:36:39.855671743Z service: shibboleth.AttributeResolverService last successful reload attempt: 2024-01-08T13:36:40.005816408Z last reload attempt: 2024-01-08T13:36:40.005816408Z No Data Connector has ever failed service: shibboleth.AttributeRegistryService last successful reload attempt: 2024-01-08T13:36:17.429465810Z last reload attempt: 2024-01-08T13:36:17.429465810Z service: shibboleth.NameIdentifierGenerationService last successful reload attempt: 2024-01-08T13:36:41.444220674Z last reload attempt: 2024-01-08T13:36:41.444220674Z service: shibboleth.RelyingPartyResolverService last successful reload attempt: 2024-01-08T13:36:41.542714468Z last reload attempt: 2024-01-08T13:36:41.542714468Z service: shibboleth.MetadataResolverService last successful reload attempt: 2024-01-08T13:36:18.003662057Z last reload attempt: 2024-01-08T13:36:18.003662057Z metadata source: eduidcz last refresh attempt: 2024-01-08T13:36:18.602115911Z last successful refresh: 2024-01-08T13:36:18.602115911Z last update: 2024-01-08T13:36:18.602115911Z root validUntil: 2024-02-03T23:53:01Z metadata source: edugain last refresh attempt: 2024-01-08T13:36:23.567438235Z last successful refresh: 2024-01-08T13:36:23.567438235Z last update: 2024-01-08T13:36:23.567438235Z root validUntil: 2024-02-04T14:03:02Z service: shibboleth.ReloadableAccessControlService last successful reload attempt: 2024-01-08T13:36:42.376372150Z last reload attempt: 2024-01-08T13:36:42.376372150Z service: shibboleth.ReloadableCASServiceRegistry last successful reload attempt: 2024-01-08T13:36:42.426232528Z last reload attempt: 2024-01-08T13:36:42.426232528Z service: shibboleth.ManagedBeanService last successful reload attempt: 2024-01-08T13:36:42.454961810Z last reload attempt: 2024-01-08T13:36:42.454961810Z ===== Testování ===== Od verze 4.1.2 existuje modul [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199510241/HelloWorldConfiguration|Hello]], pomocí kterého je možné IdP testovat i bez napojení na federaci. Tento modul je po instalaci zapnutý. Pokud by však zapnutý náhodou nebyl, zapnete ho jednoduše: # Zapnutí modulu Hello /opt/shibboleth-idp/bin/module.sh -e idp.admin.Hello Nyní zbývá nastavit uživatele, který se bude moci k tomuto diagnostickému modulu přihlásit. To se konfiguruje v souboru ''conf/access-control.xml'' ve volbě //AccessByAdminUser//, kde je ve výchozím nastavení hodnota ''jdoe'' (tato hodnota odpovídá přihlašovacímu jménu): Následně na adrese ''/idp/profile/admin/hello'' našeho IdP můžeme přistoupit k modulu a po úspěšném přihlášení vidět seznam atributů a jejich hodnot, které bude umět IdP uvolnit službám ve federaci. Po otestování je možné modul //Hello// vypnout a restartovat Jetty: # Vypnutí modulu Hello /opt/shibboleth-idp/bin/module.sh -d idp.admin.Hello # Restartování Jetty systemctl restart jetty11 ===== Tipy ===== Na stránce [[cs:tech:idp:shibboleth:advanced]] naleznete některé zajímavé konfigurační tipy, které by vás mohly zajímat, proto se na stránku určitě podívejte. ===== Vzhled ===== Výchozí přihlašovací stránka vypadá následujícím způsobem: {{:cs:tech:idp:shib-loginpage-default-new2.png|Výchozí vzhled přihlašovací stránky.}} Její vzhled je možno upravit do vzhledu podobnému stránkám naší organizace. Veškeré úpravy se provádí v adresáři ''/opt/shibboleth-idp/views/''. Výchozí nastavení je možné najít v ''/opt/shibboleth-idp/dist/views/'', kde se můžete inspirovat. Změny provedené v souborech s koncovkou ve ''views/*.vm'' se projeví okamžitě a není potřeba generovat nový ''idp.war'' ani restartovat Jetty. ---- ====== Publikace metadat ====== **Máme-li nainstalován Shibboleth IdP, můžeme pokračovat [[cs:tech:metadata-publication|publikací metadat]].**