Obsah

Aktualizace Shibboleth IdP V4

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.

Shibboleth IdP 3 -> Shibboleth IdP 4

Pokud provozujeme Shibboleth IdP řady 3 dle návodů na webu eduID.cz, pak je aktualizace na novou řadu 4 otázka čtyř kroků:

  1. Aktualizovat na poslední verzi řady 3.
  2. Aktualizovat na verzi 4.0.0.
  3. Změnit JDBC ovladač.
  4. Smazat nadbytečné knihovny.

Aktualizace na poslední verzi Shibboleth IdP řady 3

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.

Aktualizace na Shibboleth IdP 4.0.0

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

Změna JDBC ovladače

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" />

Smazání nadbytečných knihoven

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.

Shibboleth IdP V4.0.0 -> Shibboleth IdP V4.0.1

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á.