cs:tech:idp:shibboleth:new

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
cs:tech:idp:shibboleth:new [2020/03/26 19:57]
jan.oppolzer@cesnet.cz [saml-nameid.properties]
cs:tech:idp:shibboleth:new [2022/08/03 10:05]
Jan Oppolzer odstraněno
Řádek 1: Řádek 1:
-<WRAP center alert 100%> +Upravená verze stránky [[:​cs:​tech:​idp:​shibboleth]].
-**Tento návod je určený pro //​Shibboleth IdP V4.0.0// a je teprve v přípravě,​ takže by ho nikdo neměl zatím používat a už vůbec na produkčním serveru!** +
-</​WRAP>​+
  
 ====== Shibboleth IdP ====== ====== 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 [[cs:​tech:​idp:​jetty]].** **Na této stránce se nachází návod, jak do linuxové distribuce Debian nainstalovat Shibboleth IdP. Před instalací musíme zprovoznit [[cs:​tech:​idp:​jetty]].**
 +
 +<WRAP important>​
 +**Podpora pro Shibboleth IdP řady 3 bude ukončena k 31. 12. 2020. Tento návod se tedy týká již nové řady 4.**
 +</​WRAP>​
 +
 +<WRAP tip>
 +Dne 16. 6. 2022 byl návod aktualizován pro Shibboleth IdP verze 4.2.1.
 +
 +Dne 21. 1. 2022 byl návod aktualizován pro Shibboleth IdP verze 4.1.5.
 +
 +Dne 30. 7. 2021 byl návod aktualizován pro Shibboleth IdP verze 4.1.4.
 +
 +Dne 25. 6. 2021 byl návod aktualizován pro Shibboleth IdP verze 4.1.2.
 +
 +Dne 12. 5. 2020 byl návod rozšířen o úpravy konfiguračního souboru [[#​metadata-providersxml|metadata-providers.xml]] pro využívání primárně AES-GCM šifrování před starým AES-CBC.
 +
 +V případě potíží nebo nejasností se neváhejte obrátit na [[info@eduid.cz]].
 +</​WRAP>​
  
 ---- ----
Řádek 11: Řádek 27:
 ===== Instalace ===== ===== Instalace =====
  
-Zdrojové kódy stáhneme [[https://​shibboleth.net/​downloads/​identity-provider/​4.0.0/|ze stránky projektu]] a umístíme ​do adresáře ''/​opt''​ anebo pomocí programu ​//wget// následujícím způsobem. ​Nezapomeneme ​ověřit SHA256 otisk a GPG podpis.+Zdrojové kódy stáhneme ​ručně ​[[https://​shibboleth.net/​downloads/​identity-provider/​4.2.1/|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!__
  
 <code bash> <code bash>
 # Stažení zdrojového kódu Shibboleth IdP # Stažení zdrojového kódu Shibboleth IdP
 wget -P /opt \ wget -P /opt \
-     ​https://​shibboleth.net/​downloads/​identity-provider/​4.0.0/​shibboleth-identity-provider-4.0.0.tar.gz \ +     ​https://​shibboleth.net/​downloads/​identity-provider/​4.2.1/​shibboleth-identity-provider-4.2.1.tar.gz \ 
-     ​https://​shibboleth.net/​downloads/​identity-provider/​4.0.0/​shibboleth-identity-provider-4.0.0.tar.gz.asc \ +     ​https://​shibboleth.net/​downloads/​identity-provider/​4.2.1/​shibboleth-identity-provider-4.2.1.tar.gz.asc \ 
-     ​https://​shibboleth.net/​downloads/​identity-provider/​4.0.0/​shibboleth-identity-provider-4.0.0.tar.gz.sha256+     ​https://​shibboleth.net/​downloads/​identity-provider/​4.2.1/​shibboleth-identity-provider-4.2.1.tar.gz.sha256
  
 # Přepnutí do adresáře /opt # Přepnutí do adresáře /opt
Řádek 24: Řádek 40:
  
 # Kontrola SHA256 otisku # Kontrola SHA256 otisku
-sha256sum -c shibboleth-identity-provider-4.0.0.tar.gz.sha256+sha256sum -c shibboleth-identity-provider-4.2.1.tar.gz.sha256
  
 # Kontrola GPG podpisu # Kontrola GPG podpisu
-# Nejprve importujeme klíč 07CEEB8B +gpg --verify shibboleth-identity-provider-4.2.1.tar.gz.asc
-gpg --keyserver hkp://​keys.gnupg.net --search-keys 07CEEB8B +
-# Nyní můžeme provést samotnou kontrolu +
-gpg --verify shibboleth-identity-provider-4.0.0.tar.gz.asc+
 </​code>​ </​code>​
  
-Nyní přistoupíme k samotné instalaci.+Nyní přistoupíme k samotné instalaci, na jejímž začátku si ještě vygenerujeme dvě hesla, která budeme potřebovat v průběhu instalace.
  
 <code bash> <code bash>
 +# Vygenerování dvou bezpečných hesel potřebných během instalace
 +openssl rand -hex 20
 +openssl rand -hex 20
 +
 # Instalace Shibboleth IdP # Instalace Shibboleth IdP
-tar -xzf shibboleth-identity-provider-4.0.0.tar.gz +tar -xzf shibboleth-identity-provider-4.2.1.tar.gz 
-cd shibboleth-identity-provider-4.0.0/+cd shibboleth-identity-provider-4.2.1/
 ./​bin/​install.sh ./​bin/​install.sh
 </​code>​ </​code>​
Řádek 46: Řádek 63:
   - potvrdíme cílový instalační adresář,   - potvrdíme cílový instalační adresář,
   - vyplníme hostname serveru (pokud není vyplněn správně),   - vyplníme hostname serveru (pokud není vyplněn správně),
-  - vložíme opakovaně dvě hesla (//​Backchannel PKCS12 Password// a //Cookie Encryption Key Password//​),​ která si předem vygenerujeme ​pomocí příkazu ​''​openssl ​rand -hex 20''​,+  - vložíme opakovaně dvě hesla (//​Backchannel PKCS12 Password// a //Cookie Encryption Key Password//​),​ která ​jsme si před instalací vygenerovali ​pomocí příkazu ​//openssl//,
   - potvrdíme entityID,   - potvrdíme entityID,
   - zadáme scope organizace (pokud není vyplněn správně).   - zadáme scope organizace (pokud není vyplněn správně).
Řádek 53: Řádek 70:
  
 <code bash> <code bash>
-Buildfile: /​opt/​shibboleth-identity-provider-4.0.0/​bin/​build.xml+Buildfile: /​opt/​shibboleth-identity-provider-4.2.1/​bin/​build.xml
  
 install: install:
-Source (Distribution) Directory (press <​enter>​ to accept default): [/​opt/​shibboleth-identity-provider-4.0.0] ?+Source (Distribution) Directory (press <​enter>​ to accept default): [/​opt/​shibboleth-identity-provider-4.2.1] ? 
  
-Installation Directory: [/​opt/​shibboleth-idp] ?+Installation Directory: [/​opt/​shibboleth-idp] ? 
  
-INFO [net.shibboleth.idp.installer.V4Install:​151] - New Install. ​ Version: 4.0.0 +INFO [net.shibboleth.idp.installer.V4Install:​158] - New Install. ​ Version: 4.2.1 
-Host Name: [idp.example.org] ?+Host Name: [idp.example.org] ? 
  
-INFO [net.shibboleth.idp.installer.V4Install:​549] - Creating idp-signing,​ CN = idp.example.org URI = https://​idp.example.org/​idp/​shibboleth,​ keySize=3072 +INFO [net.shibboleth.idp.installer.V4Install:​601] - Creating idp-signing,​ CN = idp.example.org URI = https://​idp.example.org/​idp/​shibboleth,​ keySize=3072 
-INFO [net.shibboleth.idp.installer.V4Install:​549] - Creating idp-encryption,​ CN = idp.example.org URI = https://​idp.example.org/​idp/​shibboleth,​ keySize=3072+INFO [net.shibboleth.idp.installer.V4Install:​601] - Creating idp-encryption,​ CN = idp.example.org URI = https://​idp.example.org/​idp/​shibboleth,​ keySize=3072
 Backchannel PKCS12 Password: Backchannel PKCS12 Password:
-Re-enter password: +Re-enter password:  
-INFO [net.shibboleth.idp.installer.V4Install:​592] - Creating backchannel keystore, CN = idp.example.org URI = https://​idp.example.org/​idp/​shibboleth,​ keySize=3072+INFO [net.shibboleth.idp.installer.V4Install:​644] - Creating backchannel keystore, CN = idp.example.org URI = https://​idp.example.org/​idp/​shibboleth,​ keySize=3072
 Cookie Encryption Key Password: Cookie Encryption Key Password:
-Re-enter password: +Re-enter password:  
-INFO [net.shibboleth.idp.installer.V4Install:​633] - Creating backchannel keystore, CN = idp.example.org URI = https://​idp.example.org/​idp/​shibboleth,​ keySize=3072+INFO [net.shibboleth.idp.installer.V4Install:​685] - Creating backchannel keystore, CN = idp.example.org URI = https://​idp.example.org/​idp/​shibboleth,​ keySize=3072
 INFO [net.shibboleth.utilities.java.support.security.BasicKeystoreKeyStrategyTool:​166] - No existing versioning property, initializing... INFO [net.shibboleth.utilities.java.support.security.BasicKeystoreKeyStrategyTool:​166] - No existing versioning property, initializing...
-SAML EntityID: [https://​idp.example.org/​idp/​shibboleth] ?+SAML EntityID: [https://​idp.example.org/​idp/​shibboleth] ? 
  
-Attribute Scope: [example.org] ?+Attribute Scope: [example.org] ? 
  
-INFO [net.shibboleth.idp.installer.V4Install:​433] - Creating Metadata to /​opt/​shibboleth-idp/​metadata/​idp-metadata.xml +INFO [net.shibboleth.idp.installer.V4Install:​474] - Creating Metadata to /​opt/​shibboleth-idp/​metadata/​idp-metadata.xml 
-INFO [net.shibboleth.idp.installer.BuildWar:​71] - Rebuilding /​opt/​shibboleth-idp/​war/​idp.war,​ Version 4.0.0 +INFO [net.shibboleth.idp.installer.BuildWar:​103] - Rebuilding /​opt/​shibboleth-idp/​war/​idp.war,​ Version 4.2.1 
-INFO [net.shibboleth.idp.installer.BuildWar:​80] - Initial populate from /​opt/​shibboleth-idp/​dist/​webapp to /​opt/​shibboleth-idp/​webpapp.tmp +INFO [net.shibboleth.idp.installer.BuildWar:​113] - Initial populate from /​opt/​shibboleth-idp/​dist/​webapp to /​opt/​shibboleth-idp/​webpapp.tmp 
-INFO [net.shibboleth.idp.installer.BuildWar:​89] - Overlay from /​opt/​shibboleth-idp/​edit-webapp to /​opt/​shibboleth-idp/​webpapp.tmp +INFO [net.shibboleth.idp.installer.BuildWar:​92] - Overlay from /​opt/​shibboleth-idp/​edit-webapp to /​opt/​shibboleth-idp/​webpapp.tmp 
-INFO [net.shibboleth.idp.installer.BuildWar:​94] - Creating war file /​opt/​shibboleth-idp/​war/​idp.war+INFO [net.shibboleth.idp.installer.BuildWar:​125] - Creating war file /​opt/​shibboleth-idp/​war/​idp.war
  
 BUILD SUCCESSFUL BUILD SUCCESSFUL
-Total time: 37 seconds+Total time: 58 seconds
 </​code>​ </​code>​
  
-Tím je instalace hotová a zbývá tedy IdP ještě nakonfigurovat.+Tím je instalace hotová a přesuneme se ke konfiguraci.
  
 ===== Konfigurace ===== ===== Konfigurace =====
  
-Konfigurace může být dost různorodá a vše závisí na tom, zda-li ​chcete ​IdP používat pouze pro přístup ke službám federace anebo se rozhodnete ​používat ​ho i pro přístup k vašim interním službám.+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.
  
-Zde uvedená ​ukázka konfigurace ​slouží jako naprostý základ.+<WRAP info> 
 +**Konfigurace ​uvedená ​v tomto návodu ​slouží jako naprostý základ, na kterém lze do budoucna stavětNení možné sepsat specifičtější návod, protože Shibboleth IdP je velmi komplexní software s nepředstavitelnou škálou možností.** 
 +</​WRAP>​
  
 ==== idp.properties ==== ==== idp.properties ====
  
-V souboru ''/​opt/​shibboleth-idp/​conf/​idp.properties''​ nastavíme, že všechny cookies budou limitovány na TLSBližší informace jsou k dispozici [[https://wiki.shibboleth.net/confluence/display/IDP4/SecurityConfiguration#​SecurityConfiguration-Properties|oficiální dokumentaci]].+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 neposlední řadě zde můžeme ovlivnit výchozí šifrovací algoritmus pro šifrování XML.
  
-Dále doplníme podporu ​pro ukládání souhlasů s vydáváním uživatelských informací ​(atributůdo databáze.+<WRAP tip> 
 +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://​wiki.shibboleth.net/​confluence/​display/​IDP4/​StorageConfiguration#​StorageConfiguration-ClientStorageService|dokumentaci]]. 
 +</​WRAP>​ 
 + 
 +<WRAP alert> 
 +Od Shibboleth IdP 4.0.0 se jako výchozí šifrovací algoritmus ​pro šifrování XML používá [[https://​wiki.shibboleth.net/​confluence/​display/​IDP4/​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://​wiki.shibboleth.net/​confluence/​display/​IDP4/​GCMEncryption|dokumentaci]] po jejím přečtení a pochopení**. 
 +</​WRAP>​
  
 <code bash> <code bash>
Řádek 105: Řádek 140:
 </​code>​ </​code>​
  
-Nastavíme ''​idp.cookie.secure''​ a ''​idp.cookie.httpOnly''​ na hodnotu ''​true''​ a ''​idp.consent.StorageService''​ na hodnotu ​''​shibboleth.JPAStorageService'':​+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://​wiki.shibboleth.net/​confluence/​display/​IDP4/​GCMEncryption|dokumentace]]** zakomentovat ​''​idp.encryption.config'',​ **pokud opravdu chceme vypnout a zakázat nový způsob bezpečného šifrování**:
  
 <code ini> <code ini>
-#​idp.cookie.secure = true 
-#​idp.cookie.httpOnly = true 
 idp.consent.StorageService = shibboleth.JPAStorageService idp.consent.StorageService = shibboleth.JPAStorageService
 +idp.storage.htmlLocalStorage = false
 +#​idp.encryption.config=shibboleth.EncryptionConfiguration.GCM
 </​code>​ </​code>​
  
 ==== ldap.properties ==== ==== ldap.properties ====
  
-V souboru ''/​opt/​shibboleth-idp/​conf/​ldap.properties'' ​se nastavuje ​konektor do LDAP serveru, pomocí něhož budeme získávat uživatelské atributy.+V souboru ''/​opt/​shibboleth-idp/​conf/​ldap.properties'' ​nastavíme ​konektor do LDAP serveru, pomocí něhož budeme získávat uživatelské atributy.
  
 <code bash> <code bash>
Řádek 128: Řádek 163:
 idp.authn.LDAP.ldapURL ​          = ldaps://​ldap.example.org:​636 idp.authn.LDAP.ldapURL ​          = ldaps://​ldap.example.org:​636
 idp.authn.LDAP.useStartTLS ​      = false idp.authn.LDAP.useStartTLS ​      = false
-idp.authn.LDAP.useSSL ​           = true 
 idp.authn.LDAP.sslConfig ​        = certificateTrust idp.authn.LDAP.sslConfig ​        = certificateTrust
 idp.authn.LDAP.trustCertificates = %{idp.home}/​credentials/​ldap-server.crt idp.authn.LDAP.trustCertificates = %{idp.home}/​credentials/​ldap-server.crt
Řádek 134: Řádek 168:
 idp.authn.LDAP.subtreeSearch ​    = true idp.authn.LDAP.subtreeSearch ​    = true
 idp.authn.LDAP.bindDN ​           = uid=shibboleth,​ou=users,​dc=example,​dc=org idp.authn.LDAP.bindDN ​           = uid=shibboleth,​ou=users,​dc=example,​dc=org
-idp.ldaptive.provider ​           = org.ldaptive.provider.unboundid.UnboundIDProvider 
 </​code>​ </​code>​
  
-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ě. ​Pokud však chcete, aby se dotazování LDAP serveru provádělo až po přihlášení,​ je potřeba nastavit volbu na hodnotu //​bindSearchAuthenticator//​.+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 (<​nowiki>​ldaps://</​nowiki>​) na stadardním portu ''​636''​. 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 (<​nowiki>​ldaps://</​nowiki>​) na stadardním portu ''​636''​.
  
-//Poznámka k ldapURL:// ​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/"''​.+<WRAP important>​ 
 +**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/"''​.** 
 +</​WRAP>​
  
-Konfigurační ​volby ''​idp.authn.LDAP.useStartTLS'' ​a ''​idp.authn.LDAP.useSSL''​ říkajíže namísto TLS budeme používat ​SSL. 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 tento soubor na odpovídající místo!**+Konfigurační ​volba ''​idp.authn.LDAP.useStartTLS'' ​určujejestli ​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 tento soubor 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ů. 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ů.
- 
-Volba na posledním řádku (''​idp.ldaptive.provider''​) je důležitá pro fungování LDAPu při použití vyšší verze Javy než 8 (náš případ). **Bez přidání této volby se Shibboleth IdP k LDAPu nepřípojí!** Bližší informace naleznete [[https://​wiki.shibboleth.net/​confluence/​display/​IDP30/​LDAPonJava%3E8|v oficiální dokumentaci]]. 
  
 ==== secrets.properties ==== ==== secrets.properties ====
  
-V souboru ''/​opt/​shibboleth-idp/​credentials/​secrets.properties'',​ který nově existuje v Shibboleth IdP od verze V4, nastavíme heslo k LDAP serveru.+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.
  
 <code bash> <code bash>
 +# Vygenerování soli
 +openssl rand -base64 36
 +
 # Otevřeme konfigurační soubor secrets.properties # Otevřeme konfigurační soubor secrets.properties
 vim /​opt/​shibboleth-idp/​credentials/​secrets.properties vim /​opt/​shibboleth-idp/​credentials/​secrets.properties
 </​code>​ </​code>​
  
-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.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. 
 + 
 +<WRAP important>​ 
 +Nikdy neměňte hodnotu v ''​idp.persistentId.salt'',​ pokud již máte v současné produkční verzi IdP nějakou sůl vygenerovanou. 
 +</​WRAP>​
  
 <code ini> <code ini>
-idp.authn.LDAP.bindDNCredential = nejakeheslo+idp.authn.LDAP.bindDNCredential = ___HESLO_PRO_BIND_K_LDAP_SERVERU___ 
 +idp.persistentId.salt = ___SŮL_PRO_GENEROVÁNÍ_IDENTIFIKÁTORŮ___
 </​code>​ </​code>​
  
Řádek 174: Řádek 215:
  
 <code xml> <code xml>
 +<!-- eduID.cz -->
 <​MetadataProvider <​MetadataProvider
     id="​eduidcz"​     id="​eduidcz"​
Řádek 212: Řádek 254:
 </​code>​ </​code>​
  
-//Blok kódu výše, tedy element <​MetadataProvider>​ se všemi atributy a potomky, je nutné umístit do elementu <​MetadataProvider>​ v konfiguračním souboru ​''​metadata-providers.xml''​! Sice to působí podivně, ale bez toho nebude XML dokument validní a konfigurace nebude fungovat.//+<WRAP important>​ 
 +Blok kódu výše, tedy element ​__<​MetadataProvider>​__ se všemi atributy a potomky, je nutné umístit do //​kořenového// ​elementu ​__<​MetadataProvider>​__ v konfiguračním souboru ​//metadata-providers.xml//! Sice to působí podivně, ale bez toho nebude XML dokument validní a konfigurace nebude fungovat. 
 +</WRAP>
  
 Pokud by vás zajímal význam atributů v elementu ''<​MetadataProvider>'',​ naleznete vše [[https://​wiki.shibboleth.net/​confluence/​display/​IDP4/​FileBackedHTTPMetadataProvider|v oficiální dokumentaci]]. Vše okolo ''<​MetadataFilter>''​ elementu naleznete také [[https://​wiki.shibboleth.net/​confluence/​display/​IDP4/​MetadataFilterConfiguration|v oficiální dokumentaci]]. Pokud by vás zajímal význam atributů v elementu ''<​MetadataProvider>'',​ naleznete vše [[https://​wiki.shibboleth.net/​confluence/​display/​IDP4/​FileBackedHTTPMetadataProvider|v oficiální dokumentaci]]. Vše okolo ''<​MetadataFilter>''​ elementu naleznete také [[https://​wiki.shibboleth.net/​confluence/​display/​IDP4/​MetadataFilterConfiguration|v oficiální dokumentaci]].
  
-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áhněte ​ho a uložte do adresáře ''/​opt/​shibboleth-idp/​credentials''​.+<WRAP tip> 
 +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. 
 + 
 +<code xml> 
 +<!-- eduID.cz --> 
 +<​MetadataProvider 
 +    id="​eduidcz"​ 
 +    xsi:​type="​FileBackedHTTPMetadataProvider"​ 
 +    backingFile="​%{idp.home}/​metadata/​eduidcz.xml"​ 
 +    metadataURL="​https://​metadata.eduid.cz/​entities/​eduid+sp"​ 
 +    maxRefreshDelay="​PT30M">​ 
 + 
 +    <​MetadataFilter 
 +        xsi:​type="​SignatureValidation"​ 
 +        requireSignedRoot="​true"​ 
 +        certificateFile="​%{idp.home}/​credentials/​metadata.eduid.cz.crt.pem"​ /> 
 + 
 +    <​MetadataFilter 
 +        xsi:​type="​RequiredValidUntil"​ 
 +        maxValidityInterval="​P30D"​ /> 
 + 
 +    <​MetadataFilter 
 +        xsi:​type="​Algorithm">​ 
 + 
 +        <​md:​EncryptionMethod Algorithm="​http://​www.w3.org/​2001/​04/​xmlenc#​aes128-cbc"​ /> 
 +        <​Entity>​ccm.net.cvut.cz</​Entity>​ 
 +        <​Entity>​https://​adfs-ext.w2lan.cesnet.cz/​adfs/​services/​trust</​Entity>​ 
 +        <​Entity>​https://​adfs.w2lan.cesnet.cz/​adfs/​services/​trust</​Entity>​ 
 +        <​Entity>​https://​auth.eidas.cesnet.cz/​sp</​Entity>​ 
 +        <​Entity>​https://​camelot.lf2.cuni.cz/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​cawi.fsv.cuni.cz/​simplesaml/​module.php/​saml/​sp/​metadata.php/​default-sp</​Entity>​ 
 +        <​Entity>​https://​collector-metacentrum.liberouter.org/​simplesaml/​module.php/​saml/​sp/​metadata.php/​collector</​Entity>​ 
 +        <​Entity>​https://​cz-online.aliveplatform.com/​simplesaml/​module.php/​saml/​sp/​metadata.php/​cz-online.aliveplatform.com</​Entity>​ 
 +        <​Entity>​https://​digi.law.muni.cz</​Entity>​ 
 +        <​Entity>​https://​digitool.is.cuni.cz/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​dspace.vsb.cz/​sp/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​dspace2.zcu.cz/​dspace</​Entity>​ 
 +        <​Entity>​https://​edu.ista.tacr.cz/​ISTA</​Entity>​ 
 +        <​Entity>​https://​filesender.cesnet.cz/​saml/​sp</​Entity>​ 
 +        <​Entity>​https://​gc3.cesnet.cz/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​index.bbmri.cz/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​iptel.cesnet.cz/​shibboleth/​cesnet-internal/​sp</​Entity>​ 
 +        <​Entity>​https://​ista.tacr.cz/​ISTA</​Entity>​ 
 +        <​Entity>​https://​itmulti.cz/​simplesaml/​module.php/​saml/​sp/​metadata.php/​portal4</​Entity>​ 
 +        <​Entity>​https://​journals.bmj.com/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​login.bbmri-eric.eu/​proxy/</​Entity>​ 
 +        <​Entity>​https://​login.ceitec.cz/​proxy/</​Entity>​ 
 +        <​Entity>​https://​login.elixir-czech.org/​proxy/</​Entity>​ 
 +        <​Entity>​https://​login.ezproxy.is.cuni.cz/​sp/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​login.ezproxy.uochb.cas.cz:​2443/​sp/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​login.ezproxy.vscht.cz/​sp/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​mefanet-motol.cuni.cz/​sp/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​meta.cesnet.cz/​sp/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​mooc.cuni.cz/​sp/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​nfsmon.ics.muni.cz/</​Entity>​ 
 +        <​Entity>​https://​odevzdej.cz/​shibboleth/</​Entity>​ 
 +        <​Entity>​https://​onlineca.cesnet-ca.cz/</​Entity>​ 
 +        <​Entity>​https://​onlineca.cesnet-ca.cz/​force</​Entity>​ 
 +        <​Entity>​https://​orca.ruk.cuni.cz/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​pentest.cesnet.cz/​sp/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​portal.lf3.cuni.cz/​shibboleth/​sp</​Entity>​ 
 +        <​Entity>​https://​postudium.cz/​auth/​saml2/​sp/​metadata.php</​Entity>​ 
 +        <​Entity>​https://​proxy.lifescienceid.org/​metadata/​backend.xml</​Entity>​ 
 +        <​Entity>​https://​registry.cesnet-ca.cz/​simplesaml</​Entity>​ 
 +        <​Entity>​https://​repozitar.cz/​shibboleth/</​Entity>​ 
 +        <​Entity>​https://​seth.ics.muni.cz/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​softweco.cz/​shibboleth-sp</​Entity>​ 
 +        <​Entity>​https://​su-dev.fit.vutbr.cz/​kis</​Entity>​ 
 +        <​Entity>​https://​su-int.fit.vutbr.cz/​kis</​Entity>​ 
 +        <​Entity>​https://​tcs-dev.cesnet.cz/​simplesaml/</​Entity>​ 
 +        <​Entity>​https://​tcs.cesnet.cz/​simplesaml/</​Entity>​ 
 +        <​Entity>​https://​teleinform.cz/​simplesaml/​module.php/​saml/​sp/​metadata.php/​portal1</​Entity>​ 
 +        <​Entity>​https://​telekomunikace-tit.cz/​simplesaml/​module.php/​saml/​sp/​metadata.php/​portal3</​Entity>​ 
 +        <​Entity>​https://​test.ista.tacr.cz/​ISTA</​Entity>​ 
 +        <​Entity>​https://​thalamoss-data.ics.muni.cz/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​theses.cz/​shibboleth/</​Entity>​ 
 +        <​Entity>​https://​vut-vsb.cz/​simplesaml/​module.php/​saml/​sp/​metadata.php/​portal2</​Entity>​ 
 +        <​Entity>​https://​vvvd.vsb.cz/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​wikisofia.cz/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​www.bookport.cz/</​Entity>​ 
 +        <​Entity>​https://​www.cistbrno.cz/</​Entity>​ 
 +        <​Entity>​https://​www.citacepro.com/​simplesaml/​module.php/​saml/​sp/​metadata.php/​eduid-sp</​Entity>​ 
 +        <​Entity>​https://​www.eunis.cz/​simplesamlphp/​module.php/​saml/​sp/​metadata.php/​eunis</​Entity>​ 
 +        <​Entity>​https://​www.jib.cz/​shibboleth</​Entity>​ 
 +        <​Entity>​https://​www.levna-knihovna.cz/​simplesamlphp/​module.php/​saml/​sp/​metadata.php/​default-sp</​Entity>​ 
 +        <​Entity>​https://​www.liberouter.org/​simplesamlphp/​module.php/​saml/​sp/​metadata.php/​liberouter</​Entity>​ 
 +        <​Entity>​https://​www.mecenat.eu/​sp</​Entity>​ 
 +        <​Entity>​https://​www.vutbr.cz/​SSO/​saml2/​sp</​Entity>​ 
 + 
 +    </​MetadataFilter>​ 
 + 
 +</​MetadataProvider>​ 
 + 
 +<!-- eduGAIN --> 
 +<​MetadataProvider 
 +    id="​edugain"​ 
 +    xsi:​type="​FileBackedHTTPMetadataProvider"​ 
 +    backingFile="​%{idp.home}/​metadata/​edugain.xml"​ 
 +    metadataURL="​https://​metadata.eduid.cz/​entities/​edugain+sp"​ 
 +    maxRefreshDelay="​PT30M">​ 
 + 
 +    <​MetadataFilter 
 +        xsi:​type="​SignatureValidation"​ 
 +        requireSignedRoot="​true"​ 
 +        certificateFile="​%{idp.home}/​credentials/​metadata.eduid.cz.crt.pem"​ /> 
 + 
 +    <​MetadataFilter 
 +        xsi:​type="​RequiredValidUntil"​ 
 +        maxValidityInterval="​P30D"​ /> 
 + 
 +    <​MetadataFilter 
 +        xsi:​type="​Algorithm">​ 
 + 
 +        <​md:​EncryptionMethod Algorithm="​http://​www.w3.org/​2001/​04/​xmlenc#​aes128-cbc"/>​ 
 +        <​ConditionRef>​shibboleth.Conditions.TRUE</​ConditionRef>​ 
 + 
 +    </​MetadataFilter>​ 
 + 
 +</​MetadataProvider>​ 
 +</​code>​ 
 + 
 +</​WRAP>​ 
 + 
 +Metadata federací ​//eduID.cz// //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''​.
  
 <code bash> <code bash>
Řádek 226: Řádek 397:
 ==== attribute-resolver.xml ==== ==== attribute-resolver.xml ====
  
-FIXME: **Důkladně otestovat šablonu pro V4!**+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.
  
-Chcete-li si konfigurační soubor ''/​opt/​shibboleth-idp/​conf/​attribute-resolver.xml''​ nakonfigurovat od začátku a naprosto sami, využijte k tomu soubor ''/​opt/​shibboleth-idp/​conf/​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.
- +
-Doporučuji však usnadnit si práci a vyjít z připraveného souboru na adrese [[https://​www.eduid.cz/​shibboleth-idp-v4/​attribute-resolver.xml]]. [[cs:​tech:​attributes]] naleznete v dokumentaci. Podle tohoto seznamu si ''​attribute-resolver.xml'' ​upravte.+
  
 <WRAP alert> <WRAP alert>
-**Návod v následujících krocích předpokládá,​ že jste použili připravenou šablonu!**+**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ěkolik služeb bez persistentního NameID ​nebude ​fungovat!**+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!**
 </​WRAP>​ </​WRAP>​
  
Řádek 241: Řádek 412:
 # Stažení attribute-resolver.xml # Stažení attribute-resolver.xml
 wget -O /​opt/​shibboleth-idp/​conf/​attribute-resolver.xml \ wget -O /​opt/​shibboleth-idp/​conf/​attribute-resolver.xml \
-    https://​www.eduid.cz/​shibboleth-idp-v4/​attribute-resolver.xml+    https://​www.eduid.cz/​shibboleth-idp/​attribute-resolver.xml
 </​code>​ </​code>​
  
-Potřebujete-li si definovat své atributy, pak bližší informace ke konfiguraci ​naleznete ​[[https://​wiki.shibboleth.net/​confluence/​display/​IDP4/​AttributeResolverConfiguration|v oficiální dokumentaci]].+Potřebujeme-li si definovat své vlastní ​atributy, pak bližší informace ke konfiguraci ​nalezneme ​[[https://​wiki.shibboleth.net/​confluence/​display/​IDP4/​AttributeResolverConfiguration|v oficiální dokumentaci]].
  
-==== attribute-filter.xml ====+<WRAP info> 
 +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. Než bude nová majoritní verze Shibboleth IdP, budeme mít hotovou revizi používání tohoto atributu na službách ve federaci a tento atribut bude možné eliminovat. 
 +</​WRAP>​
  
-FIXME: **Důkladně otestovat ​šablonu ​pro V4!**+==== 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. 
 + 
 +<code bash> 
 +# Stažení cesnetAttributes.xml 
 +wget -O /​opt/​shibboleth-idp/​conf/​attributes/​cesnetAttributes.xml \ 
 +    https://​www.eduid.cz/​shibboleth-idp/​cesnetAttributes.xml 
 +</​code>​ 
 + 
 +==== 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: 
 + 
 +<code xml> 
 +<import resource="​cesnetAttributes.xml"​ /> 
 +</​code>​ 
 + 
 +Pro jednoduchost je možné tento konfigurační soubor stáhnout z našeho webu. 
 + 
 +<code bash> 
 +# Stažení default-rules.xml 
 +wget -O /​opt/​shibboleth-idp/​conf/​attributes/​default-rules.xml \ 
 +    https://​www.eduid.cz/​shibboleth-idp/​default-rules.xml 
 +</​code>​ 
 + 
 +==== 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. 
 + 
 +<code bash> 
 +# Stažení eduPerson.xml 
 +wget -O /​opt/​shibboleth-idp/​conf/​attributes/​eduPerson.xml \ 
 +    https://​www.eduid.cz/​shibboleth-idp/​eduPerson.xml 
 +</​code>​ 
 + 
 +==== 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. 
 + 
 +<code bash> 
 +# Stažení inetOrgPerson.xml 
 +wget -O /​opt/​shibboleth-idp/​conf/​attributes/​inetOrgPerson.xml \ 
 +    https://​www.eduid.cz/​shibboleth-idp/​inetOrgPerson.xml 
 +</​code>​ 
 + 
 +==== 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''​. 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-v4/​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]]. 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]].
Řádek 258: Řádek 477:
 <code bash> <code bash>
 wget -O /​opt/​shibboleth-idp/​conf/​attribute-filter.xml \ wget -O /​opt/​shibboleth-idp/​conf/​attribute-filter.xml \
-    https://​www.eduid.cz/​shibboleth-idp-v4/​attribute-filter.xml+    https://​www.eduid.cz/​shibboleth-idp/​attribute-filter.xml
 </​code>​ </​code>​
  
Řádek 269: Řádek 488:
 <code bash> <code bash>
 # Otevřeme konfigurační soubor idp-metadata.xml # Otevřeme konfigurační soubor idp-metadata.xml
-vi /​opt/​shibboleth-idp/​metadata/​idp-metadata.xml+vim /​opt/​shibboleth-idp/​metadata/​idp-metadata.xml
 </​code>​ </​code>​
  
Řádek 287: Řádek 506:
 </​code>​ </​code>​
  
-Dále je nutno doplnit název organizace v elementu ''<​Organization>''​ (patří do elementu ''<​EntityDescriptor>''​ za element ''</​AttributeAuthorityDescriptor>''​):​+Dále je nutno doplnit název organizace v elementu ''<​Organization>''​ (patří do elementu ''<​EntityDescriptor>''​ za element ''</​IDPSSODescriptor>''​):​
  
 <code xml> <code xml>
Řádek 308: Řádek 527:
     <​EmailAddress>​mailto:​krystof.satecek@example.org</​EmailAddress>​     <​EmailAddress>​mailto:​krystof.satecek@example.org</​EmailAddress>​
 </​ContactPerson>​ </​ContactPerson>​
-</​code>​ 
- 
-V metadatech ještě doplníme podporu pro persistentní identifikátor. 
- 
-Přidáme do elementu ''<​IDPSSODescriptor>''​ následující řádek těsně před ukončovací element ''</​IDPSSODescriptor>''​. 
- 
-<code xml> 
-<​NameIDFormat>​urn:​oasis:​names:​tc:​SAML:​2.0:​nameid-format:​persistent</​NameIDFormat>​ 
-</​code>​ 
- 
-=== eduGAIN === 
- 
-Kromě služeb ve federaci [[cs:​index|eduID.cz]] je možné zpřístupnit uživatelům i služby mezinárodní federace [[http://​edugain.org|eduGAIN]]. K tomu je potřeba, aby bylo IdP exportováno do metadat eduGAINu, což se zajistí následující úpravou souboru ''/​opt/​shibboleth-idp/​metadata/​idp-metadata.xml''​. 
- 
-**Pozor!** Následující kód je třeba umístit přesně tímto způsobem! Nejprve je element ''<​EntityDescriptor>'',​ pak následuje element ''<​Extensions>''​ a v něm jsou elementy ''<​RepublishRequest>''​ a ''<​RepublishTarget>''​! __Nepatří tedy do elementu ''<​Extensions>''​ umístěného v elementu ''<​IDPSSODescriptor>''​!__ 
- 
-<code xml> 
-<​EntityDescriptor>​ 
- 
-    <​Extensions>​ 
- 
-        <!-- eduGAIN --> 
-        <​eduidmd:​RepublishRequest xmlns:​eduidmd="​http://​eduid.cz/​schema/​metadata/​1.0">​ 
-            <​eduidmd:​RepublishTarget>​http://​edugain.org/</​eduidmd:​RepublishTarget>​ 
-        </​eduidmd:​RepublishRequest>​ 
- 
-        <​!-- ​                                     --> 
-        <!-- Zde následují element Scope a UIInfo --> 
-        <​!-- ​                                     --> 
- 
-    </​Extensions>​ 
- 
-</​EntityDescriptor>​ 
 </​code>​ </​code>​
  
Řádek 350: Řádek 536:
 <code bash> <code bash>
 # Úpravy v konfiguračním souboru global.xml # Úpravy v konfiguračním souboru global.xml
-vi /​opt/​shibboleth-idp/​conf/​global.xml+vim /​opt/​shibboleth-idp/​conf/​global.xml
 </​code>​ </​code>​
  
Řádek 382: Řádek 568:
     p:​generateDdl="​true"​     p:​generateDdl="​true"​
     p:​database="​MYSQL"​     p:​database="​MYSQL"​
-    p:​databasePlatform="​org.hibernate.dialect.MySQL5Dialect" />+    p:​databasePlatform="​org.hibernate.dialect.MariaDBDialect" />
 </​code>​ </​code>​
  
Řádek 391: Řádek 577:
 <code bash> <code bash>
 # Úpravy v konfiguračním souboru saml-nameid.properties # Úpravy v konfiguračním souboru saml-nameid.properties
-vi /​opt/​shibboleth-idp/​conf/​saml-nameid.properties+vim /​opt/​shibboleth-idp/​conf/​saml-nameid.properties
 </​code>​ </​code>​
  
-FIXME +Zde definujeme odkazy na výše definované "<​bean>​y",​ dále atribut, který se bude pro výpočet persistentního identifikátoru používat (''​uid''​).
- +
-Zde definujeme odkazy na výše definované "<​bean>​y",​ dále atribut, který se bude pro výpočet persistentního identifikátoru používat (''​uid''​) a sůl (''​salt''​) použitou pro výpočet (tu jsme si již vygenerovali výše).+
  
 <code ini> <code ini>
 idp.persistentId.sourceAttribute = uid idp.persistentId.sourceAttribute = uid
-# Nové IdP+# Nové IdP (BASE32)
 idp.persistentId.encoding = BASE32 idp.persistentId.encoding = BASE32
-# Migrované IdP+# Migrované IdP (BASE64)
 #​idp.persistentId.encoding = BASE64 #​idp.persistentId.encoding = BASE64
 idp.persistentId.generator = shibboleth.StoredPersistentIdGenerator idp.persistentId.generator = shibboleth.StoredPersistentIdGenerator
Řádek 414: Řádek 598:
 <code bash> <code bash>
 # Úpravy v konfiguračním souboru saml-nameid.xml # Úpravy v konfiguračním souboru saml-nameid.xml
-vi /​opt/​shibboleth-idp/​conf/​saml-nameid.xml+vim /​opt/​shibboleth-idp/​conf/​saml-nameid.xml
 </​code>​ </​code>​
  
Řádek 429: Řádek 613:
 <code bash> <code bash>
 # Úpravy v konfiguračním souboru subject-c14n.xml # Úpravy v konfiguračním souboru subject-c14n.xml
-vi /​opt/​shibboleth-idp/​conf/​c14n/​subject-c14n.xml+vim /​opt/​shibboleth-idp/​conf/​c14n/​subject-c14n.xml
 </​code>​ </​code>​
  
Řádek 436: Řádek 620:
 <code xml> <code xml>
 <ref bean="​c14n/​SAML2Persistent"​ /> <ref bean="​c14n/​SAML2Persistent"​ />
 +</​code>​
 +
 +==== 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/​IDP4/​pages/​1265631751/​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ě.
 +
 +<code bash>
 +# 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
 </​code>​ </​code>​
  
Řádek 486: Řádek 682:
 ### Operating Environment Information ### Operating Environment Information
 operating_system:​ Linux operating_system:​ Linux
-operating_system_version:​ 4.19.0-6-amd64+operating_system_version:​ 4.19.0-16-amd64
 operating_system_architecture:​ amd64 operating_system_architecture:​ amd64
-jdk_version:​ 11.0.5+jdk_version:​ 11.0.11
 available_cores:​ 1 available_cores:​ 1
-used_memory: ​391 MB+used_memory: ​567 MB
 maximum_memory:​ 1500 MB maximum_memory:​ 1500 MB
  
 ### Identity Provider Information ### Identity Provider Information
-idp_version: ​3.4.6 +idp_version:​ 4.1.4 
-start_time: ​2019-12-13T15:34:26+01:00 +start_time: ​2021-07-30T12:30:59.362Z 
-current_time: ​2019-12-13T15:34:28+01:00 +current_time: ​2021-07-30T12:31:02.708316Z 
-uptime: ​2512 ms+uptime: ​PT3.346S
  
-serviceshibboleth.LoggingService +enabled modules 
-last successful reload attempt: 2019-12-13T14:​33:​26Z + idp.authn.Password (Password Authentication) 
-last reload attempt: 2019-12-13T14:​33:​26Z+ idp.admin.Hello (Hello World)
  
-serviceshibboleth.ReloadableAccessControlService +installed plugins
-last successful reload attempt: 2019-12-13T14:​33:​50Z +
-last reload attempt: 2019-12-13T14:​33:​50Z+
  
-service: shibboleth.MetadataResolverService +service: shibboleth.LoggingService 
-last successful reload attempt: ​2019-12-13T14:33:40Z +last successful reload attempt: ​2021-07-30T12:30:36.979656Z 
-last reload attempt: ​2019-12-13T14:33:40Z+last reload attempt: ​2021-07-30T12:30:36.979656Z
  
- metadata sourceeduidcz +serviceshibboleth.AttributeFilterService 
- last refresh ​attempt: ​2019-12-13T14:33:40Z +last successful reload ​attempt: ​2021-07-30T12:30:49.708861Z 
- last successful refresh: 2019-12-13T14:​33:​40Z +last reload attempt2021-07-30T12:30:49.708861Z
- last update: 2019-12-13T14:​33:​40Z +
- root validUntil2020-01-12T14:01:02Z+
  
- metadata sourceedugain +serviceshibboleth.AttributeResolverService 
- last refresh ​attempt: ​2019-12-13T14:33:42Z +last successful reload ​attempt: ​2021-07-30T12:30:50.098082Z 
- last successful refresh: 2019-12-13T14:​33:​42Z +last reload attempt2021-07-30T12:30:50.098082Z
- last update: 2019-12-13T14:​33:​42Z +
- root validUntil2020-01-09T15:02:02Z+
  
-service: shibboleth.RelyingPartyResolverService + No Data Connector has ever failed 
-last successful reload attempt: ​2019-12-13T14:33:39Z + 
-last reload attempt: ​2019-12-13T14:33:39Z+service: shibboleth.AttributeRegistryService 
 +last successful reload attempt: ​2021-07-30T12:30:40.596293Z 
 +last reload attempt: ​2021-07-30T12:30:40.596293Z
  
 service: shibboleth.NameIdentifierGenerationService service: shibboleth.NameIdentifierGenerationService
-last successful reload attempt: ​2019-12-13T14:33:39Z +last successful reload attempt: ​2021-07-30T12:30:51.374966Z 
-last reload attempt: ​2019-12-13T14:33:39Z+last reload attempt: ​2021-07-30T12:30:51.374966Z
  
-service: shibboleth.AttributeResolverService +service: shibboleth.RelyingPartyResolverService 
-last successful reload attempt: ​2019-12-13T14:33:30Z +last successful reload attempt: ​2021-07-30T12:30:51.627042Z 
-last reload attempt: ​2019-12-13T14:33:30Z+last reload attempt: ​2021-07-30T12:30:51.627042Z
  
- DataConnector staticAttributeshas never failed+serviceshibboleth.MetadataResolverService 
 +last successful reload attempt: 2021-07-30T12:​30:​41.096033Z 
 +last reload attempt: 2021-07-30T12:​30:​41.096033Z
  
- DataConnector myLDAPhas never failed+ metadata sourceShibbolethMetadata 
 + last refresh attempt: 2021-07-30T12:​30:​47.900064Z 
 + last successful refresh: 2021-07-30T12:​30:​54.303173Z 
 + last update: 2021-07-30T12:​30:​54.303173Z
  
- DataConnector myStoredIdhas never failed+ metadata sourceeduidcz 
 + last refresh attempt: 2021-07-30T12:​30:​47.900064Z 
 + last successful refresh: 2021-07-30T12:​30:​47.900064Z 
 + last update: 2021-07-30T12:​30:​47.900064Z 
 + root validUntil: 2021-07-07T23:​53:​01Z
  
-serviceshibboleth.AttributeFilterService + metadata sourceedugain 
-last successful ​reload attempt2019-12-13T14:33:29Z + last refresh attempt: 2021-07-30T12:​30:​54.303173Z 
-last reload attempt2019-12-13T14:33:29Z + last successful ​refresh2021-07-30T12:30:54.303173Z 
-</​code>​+ last update2021-07-30T12:30:54.303173Z 
 + root validUntil: 2021-07-08T14:​03:​02Z
  
-===== Tipy =====+service: shibboleth.ReloadableAccessControlService 
 +last successful reload attempt: 2021-07-30T12:​30:​52.142085Z 
 +last reload attempt: 2021-07-30T12:​30:​52.142085Z
  
-Na stránce [[cs:tech:idp:shibboleth:tips]] naleznete některé zajímavé konfigurační tipy, které by vás mohly zajímat, proto se na stránku určitě podívejte.+serviceshibboleth.ReloadableCASServiceRegistry 
 +last successful reload attempt2021-07-30T12:30:​52.226890Z 
 +last reload attempt: 2021-07-30T12:​30:52.226890Z
  
-===== Vzhled =====+service: shibboleth.ManagedBeanService 
 +last successful reload attempt: 2021-07-30T12:​30:​52.254087Z 
 +last reload attempt: 2021-07-30T12:​30:​52.254087Z 
 +</​code>​
  
-Výchozí přihlašovací stránka vypadá následujícím způsobem:+===== Testování =====
  
-{{:cs:​tech:​idp:​shib-loginpage-default.png|Výchozí vzhled přihlašovací stránky.}}+Od verze 4.1.2 existuje modul [[https://​wiki.shibboleth.net/​confluence/​display/​IDP4/​HelloWorldConfiguration|Hello]], pomocí kterého je možné IdP testovat i bez napojení na federaci.
  
-Její vzhled ​je možno upravit do vzhledu podobnému stránkám naší organizaceVeškeré úpravy se provádí v adresáři ''/​opt/​shibboleth-idp/​edit-webapp/''​jehož obsah se při aktualizaci Shibboleth IdP, narozdíl od adresář''/​opt/​shibboleth-idp/​webapp/'',​ nepřepisuje. +Tento modul je po instalaci zapnutýPokud by však zapnutý náhodou nebylzapnete ho jednoduše:
- +
-Po úpravách v adresáři ''/​opt/​shibboleth-idp/​edit-webapp/''​ je nutné přegenerovat ''​idp.war''​. Po zadání následujících příkazů je třeba potvrdit cílový adresář s instalací Shibboleth IdP.+
  
 <code bash> <code bash>
-Přegenerování idp.war +Zapnutí modulu Hello 
-cd /​opt/​shibboleth-idp +/​opt/​shibboleth-idp/​bin/​module.sh -e idp.admin.Hello
-./bin/build.sh+
 </​code>​ </​code>​
  
-<code bash> +Nyní zbývá nastavit uživatele, který se bude moci k tomuto diagnostickému modulu přihlásitTo 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):
-# Průběh generování nového idp.war +
-Installation Directory: [/opt/​shibboleth-idp]+
  
-Rebuilding /opt/shibboleth-idp/​war/​idp.war ..+<code xml> 
-...done +<entry key="​AccessByAdminUser">​ 
- +  <bean parent="​shibboleth.PredicateAccessControl">​ 
-BUILD SUCCESSFUL +    <​constructor-arg>​ 
-Total time: 3 seconds+      <bean parent="​shibboleth.Conditions.SubjectName"​ c:​collection="#​{'​jdoe'​}"​ /> 
 +    </​constructor-arg>​ 
 +  </​bean>​ 
 +</​entry>​
 </​code>​ </​code>​
  
-Pak je ještě nutné ​restartovat Jetty:+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ě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:
  
 <code bash> <code bash>
-Restart ​Jetty+Vypnutí modulu Hello 
 +/​opt/​shibboleth-idp/​bin/​module.sh -d idp.admin.Hello 
 + 
 +# Restartování ​Jetty
 systemctl restart jetty9 systemctl restart jetty9
 </​code>​ </​code>​
 +
 +===== 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-new.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]].** **Máme-li nainstalován Shibboleth IdP, můžeme pokračovat [[cs:​tech:​metadata-publication|publikací metadat]].**