Uppgraderingen till Shibboleth IdPv4 är lite mer komplicerad än en vanlig uppgradering av Shibboleth. Här beskriver vi de steg som har testats och fungerar för SWAMID IdPer som tidigare installerats med hjälp av SWAMIDs idp-installer. Dessa steg är testad på Centos 7 och Debian X.
Viktigt! Du ska uppgradera enbart från den senaste version av Shibboleth IdP v3 som är 3.4.7. Och du ska ha redan uppdaterat dina konfigurationsfiler (särskillt attribute-resolver.xml och attribute-filter.xml) till att vara kompatibla med IdP v4 (och v3.4) INNAN du påbörjar uppgradering. Se Example of a standard attribute resolver for Shibboleth IdP v3.4.0 and above och Example of a standard attribute filter for Shibboleth IdP v3.4.0 and above
Ta en backup eller snapshot innan du påbörjar uppgradering och helst på en test IdP innan du uppgradera din produktion IdP!
IdPv4 kräver Java 11. Avinstallera Java 8 och installera Java 11.
# yum remove java-1.8.0-openjdk-headless java-1.8.0-openjdk # yum install java-11-openjdk-headless java-11-openjdk # alternatives --config java There is 2 program that provides 'java'. Selection Command ----------------------------------------------- *+ 1 /usr/java/jre1.8.0_151/bin/java 2 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.7.10-4.el7_8.x86_64/bin/java) Enter to keep the current selection[+], or type selection number: 2 |
IdPv4 kräver Java 11. Avinstallera Java 8 och installera Java 11
Följande steg är samma oavsett om du kör Debian X eller Centos 7. Jetty måste uppgraderas från 9.3 till 9.4. Det är bra att kontrollera dependencies som du kan ha i edit-webapp mappen innan du kör själva Shibboleth uppgraderingen.
Shibboleth IdP v4 kräver Jetty 9.4 och ganska mycket har ändrats jämfört med 9.3. SWAMID operations har därför packeterat en jetty-base mapp som är anpassad för SWAMID IdPer. Du kan ladda ner den och packa upp i jetty mappen, därefter finns bara några ändringar som du behöver göra. Den är baserad på en jetty-base som Shibboleth projektet publicerar. Det finns mer information om hur man konfigurerar jetty-base hos Shibboleths Wiki (https://wiki.shibboleth.net/confluence/display/IDP4/Jetty94)
Ladda ner den senaste version av Jetty 9.4. https://www.eclipse.org/jetty/download.html Vid skrivande stund, 9.4.31.v20200723
# cd /opt # wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.31.v20200723/jetty-distribution-9.4.31.v20200723.zip # unzip jetty-distribution-9.4.31.v20200723 |
Ladda ner SWAMIDs jetty-base och packa upp. Ladda ner jetty-base-swamid.zip från HÄR
# cd jetty-distribution-9.4.31.v20200723 # unzip /path/to/jetty-base-swamid.zip |
Uppdatera jetty-base saker.... TO BE COMPLETED.
Uppdatera /etc/default/jetty
export JAVA_HOME=/etc/alternatives/jre_11 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin export JAVA_OPTIONS="-Didp.home=/opt/shibboleth-idp -Xmx4096M" export JETTY_HOME=/opt/jetty export JETTY_BASE=/opt/jetty/jetty-base export JETTY_USER=jetty |
Kontrollera Jetty start script
# cd /etc/init.d # rm jetty # ln -s /opt/jetty/bin/jetty.sh jetty |
Länka om jetty till rätt distribution mapp. Först måste du se till att Jetty är avstängd.
# service jetty stop # cd /opt # chown -R jetty.jetty jetty-distribution-9.4.31.v20200723 # rm jetty # ln -s jetty-distribution-9.4.31.v20200723 jetty |
Kontrollera ägarskap av /var/run/jetty mappen. Vi har sett problem med att /var/run/jetty ägs av root istället för jetty.jetty. Kontrollera att det är korrekt
# ls -ld /var/run/jetty drwxr-xr-x 2 jetty jetty 80 1 okt 21.51 /var/run/jetty/ |
Ladda ner och packa upp den senaste version av IdP v4, i skrivande stund 4.0.1. Backa upp din shibboleth-idp mapp innan du uppgraderar.
# cd /opt # wget http://shibboleth.net/downloads/identity-provider/latest/shibboleth-identity-provider-4.0.1.tar.gz # tar zxvf shibboleth-identity-provider-4.0.1.tar.gz # cp -r shibboleth-idp shibboleth-idp.orig |
Vi har sett att det finns äldre versioner av httpcore, httpclient, commons-dbcp2, commons-pool2 under mapp /opt/shibboleth-idp/edit-webapp/WEB-INF/lib jämfört med de versioner som kommer med IdP v4. Om du har dessa jar-filer i /opt/shibboleth-idp/edit-webapp/WEB-INF/lib, tar bort dem.
Om du inkluderar andra JAR filer i /opt/shibboleth-idp/edit-webapp/WEB-INF/lib såsom MySQL connector, HikariCP så är det bra att uppgradera dem till senaste version. SWAMID operations har testat med mysql-connector-java-5.1.48-bin.jar och HikariCP-3.4.5.jar.
Kör uppgradering av Shibboleth:
# cd /opt # rm shibboleth-identity-provider # ln -s shibboleth-identity-provider-4.0.1 shibboleth-identity-provider # cd shibboleth-identity-provider # bin/install.sh |
Starta Jetty
# service jetty start |
Kontrollera jetty loggar om någonting inte fungerar. Kontrollera sedan idp-process.log för att hitta eventuella problem med IdPn. Testa med https://release-check.swamid.se
MySQL Connector & HikariCP =============== Ladda ner mysql-connector-java-5.1.48-bin.tar.gz från https://downloads.mysql.com/archives/c-j/ wget https://repo1.maven.org/maven2/com/zaxxer/HikariCP/3.4.5/HikariCP-3.4.5.jar Jetty 9.4 ========= Kolla senaste 9.4 på https://www.eclipse.org/jetty/download.html wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.28.v20200408/jetty-distribution-9.4.28.v20200408.zip wget https://build.shibboleth.net/nexus/service/local/repositories/releases/content/net/shibboleth/idp/idp-jetty-base/9.4.0/idp-jetty-base-9.4.0.tar.gz cd jetty-distribution-9.4.28.v20200408 tar zxvf ../idp-jetty-base-9.4.0.tar.gz Bygga om jetty-base med hjälp av https://wiki.shibboleth.net/confluence/display/IDP4/Jetty94 Lägga till start.d/start.ini Uppdatera idp.ini: jetty.sslContext.keyStorePath=../../shibboleth-idp/credentials/https.p12 jetty.sslContext.trustStorePath=../../shibboleth-idp/credentials/https.p12 passwords jetty.ssl.port=7443 jetty.http.host=127.0.0.1 jetty.http.port=80 Uppdatera idp-backchannel.ini (om man använda) idp.backchannel.port=8443 idp.backchannel.keyStorePath=../../shibboleth-idp/credentials/idp-backchannel.p12 passwords Peka ut idp.war.path in idp.xml <Set name="war"><SystemProperty name="idp.war.path" default="/opt/shibboleth/war/idp.war" /></Set> cd .. sudo chown -R jetty:jetty jetty-distribution-9.4.28.v20200408/ sudo rm jetty sudo ln -s jetty-distribution-9.4.28.v20200408 jetty Uppgradera Shibboleth ===================== wget http://shibboleth.net/downloads/identity-provider/latest/shibboleth-identity-provider-4.0.1.tar.gz tar zxvf shibboleth-identity-provider-4.0.1.tar.gz cp -r shibboleth-idp shibboleth-idp.orig *städa i /opt/shibboleth-idp/edit-webapp/WEB-INF/lib* httpcore, httpclient, commons-dbcp2, commons-pool2 *cp in Hikari och MySQL* rm shibboleth-identity-provider ln -s shibboleth-identity-provider-4.0.1 shibboleth-identity-provider cd shibboleth-identity-provider bin/install.sh |