Dne 3. dubna 2020 byl tento návod doplněn o odstranění nadbytečných knihoven commons-dbcp2.jar a commons-pool2.jar.
Na této stránce se nachází návod, jak aktualizovat Shibboleth IdP řady 3 na řadu 4.
Důrazně doporučuji před aktualizací zálohovat databázi i konfigurace samotného Shibboleth IdP a Jetty a pročíst poznámky k vydání (ChangeLog)!
Předešlý návod pro IdP řady 3 i aktuální návod pro IdP řady 4 počítá se skutečností, že IdP běží na Debianu 10 (Buster) a používá Jetty 9.4.15 z distribučních balíčků Debianu. V případě použití staší verze systému anebo nepoužívání Jetty z balíčků distribuce, je vhodné nejprve aktualizovat systém a/nebo Jetty. V takovém případě se může hodit návod na tzv. online migraci.
Provozování Shibboleth IdP na jiném operačním systému anebo v jiném kontejneru (např. Tomcat) není z naší strany podporováno.
Pokud provozujeme Shibboleth IdP řady 3 dle návodů na webu eduID.cz, pak je aktualizace na novou řadu 4 otázka čtyř kroků:
Abychom mohli nejsnazším způsobem aktualizovat na Shibboleth IdP řady 4, musíme nejprve aktualizovat na poslední verzi řady 3, kterou je ke dni 30. 3. 2020 verze 3.4.6.
Před aktualizací na řadu 4 si pečlivě přečteme poznámky k vydání.
Následně ze stránky projektu stáhneme zdrojové kódy a umístíme je do adresáře /opt
např. pomocí programu wget následujícím způsobem. Nezapomeneme ověřit SHA256 otisk a případně i GPG podpis.
# Stažení zdrojového kódu Shibboleth IdP 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.0.0/shibboleth-identity-provider-4.0.0.tar.gz.asc \ https://shibboleth.net/downloads/identity-provider/4.0.0/shibboleth-identity-provider-4.0.0.tar.gz.sha256
Nyní přistoupíme k samotné instalaci.
# Instalace Shibboleth IdP cd /opt tar -xzf shibboleth-identity-provider-4.0.0.tar.gz cd shibboleth-identity-provider-4.0.0/ ./bin/install.sh
Během instalace potvrdíme pouze zdrojový a cílový adresář, průběh vypadá následovně:
Buildfile: /opt/shibboleth-identity-provider-4.0.0/bin/build.xml install: Source (Distribution) Directory (press <enter> to accept default): [/opt/shibboleth-identity-provider-4.0.0] ? Installation Directory: [/opt/shibboleth-idp] ? INFO [net.shibboleth.idp.installer.V4Install:155] - Update from version 3 to version 4.0.0 INFO [net.shibboleth.idp.installer.BuildWar:71] - Rebuilding /opt/shibboleth-idp/war/idp.war, Version 4.0.0 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:89] - 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 BUILD SUCCESSFUL Total time: 6 seconds
Nyní restartujeme Jetty:
# Restart Jetty
systemctl restart jetty9
V návodech pro Shibboleth IdP jsme historicky doporučovali používat MySQL pro ukládání persistentních identifikátorů a JDBC ovladač pro MySQL. Debian ale postupně přešel na MariaDB, kterou jsme tedy začali doporučovat namísto MySQL, avšak JDBC ovladač zůstal nadále stejný. Nyní je však možné v Debianu 10 (Buster) nainstalovat balíček s JDBC ovladačem pro MariaDB a není tak nutné stahovat zdrojové kódy z dev.mysql.com a ručně je hlídat aktuální — o aktualizaci se teď postará správce balíčku v Debianu.
Nejprve nainstalujeme balíček s JDBC ovladačem pro MariaDB:
apt install libmariadb-java
Nalinkujeme právě nainstalovaný JDBC ovladač do knihoven Jetty:
# Vytvoření symbolického odkazu na nový JDBC ovladač ln -s /usr/share/java/mariadb-java-client.jar \ /usr/share/jetty9/lib/ext/mariadb-java-client.jar
A smažeme starý JDBC ovladač:
# Smazání starého JDBC ovladače rm /usr/share/jetty9/lib/ext/mysql-connector-java-5*-bin.jar
Zbývá ještě upravit konfigurační soubor Shibbolethu IdP conf/global.xml
, kde musíme změnit atributy p:driverClassName
a p:databasePlatform
, vše ostatní zůstává netknuté:
# Úpravy v konfiguračním souboru global.xml vim /opt/shibboleth-idp/conf/global.xml
<bean id="shibboleth.MySQLDataSource" class="org.apache.commons.dbcp2.BasicDataSource" p:driverClassName="org.mariadb.jdbc.Driver" p:url="jdbc:mysql://localhost:3306/shibboleth" p:username="shibboleth" p:password="___SILNE_HESLO____" /> <bean id="shibboleth.JPAStorageService.JPAVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" p:generateDdl="true" p:database="MYSQL" p:databasePlatform="org.hibernate.dialect.MariaDBDialect" />
Shibboleth IdP 4.0.0 bez viditelných oznámení — podobně jako řada 3 od verze 3.4.0 — obsahuje commons-dbcp2.jar a commons-pool2.jar, takže není nutné tyto knihovny dodávat do Jetty. Můžeme je proto odstranit.
# Smazání nadbytečných knihoven rm -i /usr/share/jetty9/lib/ext/commons-dbcp2-*.jar \ /usr/share/jetty9/lib/ext/commons-pool2-*.jar
Zbývá přegenerovat WAR soubor a restartovat Jetty:
/opt/shibboleth-idp/bin/build.sh systemctl restart jetty9
Aktualizace Shibboleth IdP na verzi 4.0.0 včetně aktualizace JDBC ovladače a odebrání nadbytečných knihoven je hotova.
Před aktualizací na V4.0.1 si pečlivě přečteme poznámky k vydání. Jedná se o opravné vydání.
Následně ze stránky projektu stáhneme zdrojové kódy a umístíme je do adresáře /opt
např. pomocí programu wget následujícím způsobem. Nezapomeneme ověřit SHA256 otisk a případně i GPG podpis.
# Stažení zdrojového kódu Shibboleth IdP wget -P /opt \ https://shibboleth.net/downloads/identity-provider/4.0.1/shibboleth-identity-provider-4.0.1.tar.gz \ https://shibboleth.net/downloads/identity-provider/4.0.1/shibboleth-identity-provider-4.0.1.tar.gz.asc \ https://shibboleth.net/downloads/identity-provider/4.0.1/shibboleth-identity-provider-4.0.1.tar.gz.sha256
Nyní přistoupíme k samotné instalaci.
# Instalace Shibboleth IdP cd /opt tar -xzf shibboleth-identity-provider-4.0.1.tar.gz cd shibboleth-identity-provider-4.0.1/ ./bin/install.sh
Během instalace potvrdíme pouze zdrojový a cílový adresář, průběh vypadá následovně:
Buildfile: /opt/shibboleth-identity-provider-4.0.1/bin/build.xml install: Source (Distribution) Directory (press <enter> to accept default): [/opt/shibboleth-identity-provider-4.0.1] ? Installation Directory: [/opt/shibboleth-idp] ? INFO [net.shibboleth.idp.installer.V4Install:155] - Update from version 4.0.0 to version 4.0.1 INFO [net.shibboleth.idp.installer.BuildWar:71] - Rebuilding /opt/shibboleth-idp/war/idp.war, Version 4.0.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:89] - 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 BUILD SUCCESSFUL Total time: 6 seconds
Nyní restartujeme Jetty:
# Restart Jetty
systemctl restart jetty9
Aktualizace na V4.0.1 je hotová.