cs:tech:idp:shibboleth:upgrade

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
cs:tech:idp:shibboleth:upgrade [2020/03/27 09:29]
Jan Oppolzer
cs:tech:idp:shibboleth:upgrade [2020/04/03 09:37] (current)
Jan Oppolzer [Aktualizace Shibboleth IdP]
Line 1: Line 1:
 ====== Aktualizace Shibboleth IdP ====== ====== Aktualizace Shibboleth IdP ======
  
-Na této stránce najdete návod, jak aktualizovat Shibboleth IdP řady 3. Přestože by se při sledování níže uvedených postupů nemělo přihodit nic špatného, **výrazně doporučuji, abyste před aktualizací provedli zálohy SQL databáze i konfigurace samotného IdP pročetli si poznámky k vydání (ChangeLog)**.+<WRAP tip> 
 +Dne 3. dubna 2020 byl tento návod doplněn o odstranění nadbytečných knihoven //​commons-dbcp2.jar// ​//​commons-pool2.jar//​. 
 +</​WRAP>​
  
-----+<WRAP center alert 100%> 
 +Na této stránce se nachází návod, jak aktualizovat Shibboleth IdP řady 3 na řadu 4.
  
-[[..|Aktuální ​návod]] pro Shibboleth ​IdP 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//​. ​Máte-li starší verzi Shibboleth IdP, doporučujiabyste aktualizovali formou ​[[migration|online migrace]].+**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. [[migration|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. 
 +</​WRAP>​ 
 + 
 +===== 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ů: 
 + 
 +  - Aktualizovat na poslední verzi řady 3. 
 +  - Aktualizovat na verzi 4.0.0. 
 +  - Změnit JDBC ovladač. 
 +  - Smazat nadbytečné knihovny. 
 + 
 +==== Aktualizace na poslední ​verzi Shibboleth IdP řady 3 ==== 
 + 
 +Abychom mohli nejsnazším způsobem [[https://​wiki.shibboleth.net/​confluence/​display/​IDP4/​Upgrading|aktualizovat na Shibboleth IdP řady 4]]musíme nejprve [[https://​wiki.shibboleth.net/​confluence/​display/​IDP30/​Upgrading|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 [[https://​wiki.shibboleth.net/​confluence/​display/​IDP4/​Upgrading |aktualizací na řadu 4]] si pečlivě přečteme [[https://​wiki.shibboleth.net/​confluence/​display/​IDP4/​ReleaseNotes#​ReleaseNotes-4.0.0(March11,2020)|poznámky k vydání]]. 
 + 
 +Následně ​[[https://​shibboleth.net/​downloads/​identity-provider/​4.0.0/​|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. 
 + 
 +<code bash> 
 +# 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 
 +</​code>​ 
 + 
 +Nyní přistoupíme k samotné instalaci. 
 + 
 +<code bash> 
 +# 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 
 +</​code>​ 
 + 
 +Během instalace potvrdíme pouze zdrojový a cílový adresář, průběh vypadá následovně:​ 
 + 
 +<​code>​ 
 +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 
 +</​code>​ 
 + 
 +Nyní restartujeme Jetty: 
 + 
 +<code bash> 
 +# Restart Jetty 
 +systemctl restart jetty9 
 +</​code>​ 
 +==== 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: 
 + 
 +<code bash> 
 +apt install libmariadb-java 
 +</​code>​ 
 + 
 +Nalinkujeme právě nainstalovaný JDBC ovladač do knihoven Jetty: 
 + 
 +<code bash> 
 +# 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 
 +</​code>​ 
 + 
 +A smažeme starý JDBC ovladač: 
 + 
 +<code bash> 
 +# Smazání starého JDBC ovladače 
 +rm /​usr/​share/​jetty9/​lib/​ext/​mysql-connector-java-5*-bin.jar 
 +</​code>​ 
 + 
 +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é:​ 
 + 
 +<code bash> 
 +# Úpravy v konfiguračním souboru global.xml 
 +vim /​opt/​shibboleth-idp/​conf/​global.xml 
 +</​code>​ 
 + 
 +<code 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"​ /> 
 +</​code>​ 
 + 
 +==== 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. 
 + 
 +<code bash> 
 +# Smazání nadbytečných knihoven 
 +rm -i /​usr/​share/​jetty9/​lib/​ext/​commons-dbcp2-*.jar \ 
 +      /​usr/​share/​jetty9/​lib/​ext/​commons-pool2-*.jar 
 +</​code>​ 
 + 
 +Zbývá restartovat Jetty: 
 + 
 +<code bash> 
 +systemctl restart jetty9 
 +</​code>​ 
 + 
 +Aktualizace Shibboleth IdP na verzi 4.0.0 včetně aktualizace JDBC ovladače a odebrání nadbytečných knihoven je hotova.
  
Last modified:: 2020/03/27 09:29