Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
cs:tech:idp:shibboleth:new [2020/03/26 19:54] jan.oppolzer@cesnet.cz [idp.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ě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í.** | ||
+ | </WRAP> | ||
==== idp.properties ==== | ==== idp.properties ==== | ||
- | V souboru ''/opt/shibboleth-idp/conf/idp.properties'' nastavíme, že všechny cookies budou limitovány na TLS. Bližší informace jsou k dispozici [[https://wiki.shibboleth.net/confluence/display/IDP4/SecurityConfiguration#SecurityConfiguration-Properties|v 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 v 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č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 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// 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''. | ||
<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> | ||
- | <code bash> | + | 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''). |
- | # Vygenerování soli | + | |
- | openssl rand -base64 36 | + | |
- | </code> | + | |
- | + | ||
- | FIXME: SALT se nastavuje v secrets.properties | + | |
- | + | ||
- | <code ini> | + | |
- | idp.persistentId.salt = ___SALT___ | + | |
- | </code> | + | |
- | + | ||
- | 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 423: | Řá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 438: | Řá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 445: | Řá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 495: | Řá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 |
- | service: shibboleth.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) |
- | service: shibboleth.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 source: eduidcz | + | service: shibboleth.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 attempt: 2021-07-30T12:30:49.708861Z |
- | last update: 2019-12-13T14:33:40Z | + | |
- | root validUntil: 2020-01-12T14:01:02Z | + | |
- | metadata source: edugain | + | service: shibboleth.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 attempt: 2021-07-30T12:30:50.098082Z |
- | last update: 2019-12-13T14:33:42Z | + | |
- | root validUntil: 2020-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 staticAttributes: has never failed | + | service: shibboleth.MetadataResolverService |
+ | last successful reload attempt: 2021-07-30T12:30:41.096033Z | ||
+ | last reload attempt: 2021-07-30T12:30:41.096033Z | ||
- | DataConnector myLDAP: has never failed | + | metadata source: ShibbolethMetadata |
+ | 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 myStoredId: has never failed | + | metadata source: eduidcz |
+ | 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 | ||
- | service: shibboleth.AttributeFilterService | + | metadata source: edugain |
- | last successful reload attempt: 2019-12-13T14:33:29Z | + | last refresh attempt: 2021-07-30T12:30:54.303173Z |
- | last reload attempt: 2019-12-13T14:33:29Z | + | last successful refresh: 2021-07-30T12:30:54.303173Z |
- | </code> | + | last update: 2021-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. | + | service: shibboleth.ReloadableCASServiceRegistry |
+ | last successful reload attempt: 2021-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ší organizace. Veš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áře ''/opt/shibboleth-idp/webapp/'', nepřepisuje. | + | Tento modul je po instalaci zapnutý. Pokud by však zapnutý náhodou nebyl, zapnete 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á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): |
- | # 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ě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: | ||
<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]].** | ||