Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
de:shibidp:upgrade5 [2023/06/12 15:24] – [JDBC-Plugin] so ist es klarer Silke Meyerde:shibidp:upgrade5 [2024/05/08 14:44] Doreen Liebenau
Zeile 1: Zeile 1:
-====== Vorbereitungen auf Shibboleth IdP 5.x =====+====== Upgrade auf Shibboleth IdP 5.x ======
  
-===== Nashorn-Plugin ===== +<callout color="#ff9900" title="Verbesserungsvorschläge?"> 
-<callout color="#ff9900" title="JDK 17 erforderlich"> +Beiträge zur Dokumentation sind erwünscht und sehr willkommen! Kontaktieren Sie uns bitte per e-Mail (hotline@aai.dfn.de)
-Dieser Schritt kann erst auf einem Server mit JDK 17 erfolgen.+
 </callout> </callout>
  
-Eine Voraussetzung für den Betrieb des IdP 5.x ist JDK 17. Ab dem Java Development Kit 15 wird die Javascript Scripting Engine Nashorn nicht mehr mit ausliefert. Der IdP benötigt sie jedoch, um ggf. die Javascript-Anteile bei der Definition von Scripted Attributes in ''conf/attribute-resolver.xml'' auszuführen. Sie können die Funktionalität über das Nashorn-Plugin ergänzen. Es muss lediglich installiert, aber nicht konfiguriert werden (ab 4.2):<code bash>root@idp:~# /opt/shibboleth-idp/bin/plugin.sh -I net.shibboleth.idp.plugin.nashorn</code>+Die vorliegende Dokumentation wurde unter Debian Linux erstellt. Sie beschreibt das Upgrade ausgehend von folgendem Ausgangszustand:  
 +  * Betriebssystem: Debian 12 
 +  * Servlet-ContainerTomcat 9 
 +  * JavaOpenJDK 11 
 +  * Shibboleth IdP 4.3.2
  
-===== JDBC-Plugin ===== +Wir ratenwenn möglich, die Pakete Ihrer Distribution bzwIhres Betriebssystems zu installierenNicht-paketierte Software erfordert einen ungleich höheren Wartungsaufwand.
-Die Datenbank-Verbindung wird im IdP 5.x nicht mehr über den JPA Storage Service hergestelltsondern über den JDBC Storage Service. Mit folgenden Schritten stellen Sie den IdP um: +
-  - Sicherstellendass mindestens die Spalten ''context'' und ''id'' in der Tabelle ''StorageRecords'' case-sensitive behandelt werden. +
-    *  Prüfen Sie die COLLATION. Eine Collation, deren Name auf ''_ci'' endet, ist case-insensitive,''_cs'' steht für case-sensitive, ''utf8_bin'' ist ebenfalls case-sensitive. Ab MariaDB heißt es ''utf8_mb3'' statt ''utf8''.<code bash>root@idp:~# show create table StorageRecords\G; +
-*************************** 1. row *************************** +
-Table: StorageRecords +
-Create Table: CREATE TABLE `StorageRecords` ( +
-  `context` varchar(255) NOT NULL, +
-  `id` varchar(255) NOT NULL, +
-  `expires` bigint(20) DEFAULT NULL, +
-  `value` longtext NOT NULL, +
-  `version` bigint(20) NOT NULL, +
-  PRIMARY KEY (`context`,`id`) +
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin +
-1 row in set (0.000 sec)</code> +
-    * In der Dokumentation Ihrer Datenbank-Software finden Sie die Umstellungsmöglichkeiten und Hinweise, was ggfbzgl. der Länge der Werte zu beachten ist (hier etwa für [[https://mariadb.com/kb/en/setting-character-sets-and-collations/|MariaDB]]). +
-    * Um die Collation für die ganze Tabelle ''StorageRecords'' umzustellen, gehen Sie wie folgt vor:<code bash>MariaDB[idp]> ALTER TABLE StorageRecords CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;</code> +
-  - Installation des JDBC-Plugins (ab 4.2):<code bash>root@idp:~# /opt/shibboleth-idp/bin/plugin.sh -I net.shibboleth.plugin.storage.jdbc</code> +
-  - Änderung der Konfiguration in ''conf/global.xml'':<code xml>    <!-- VORHER -->       |     <!-- NACHHER --> +
-        <bean id="shibboleth.MySQLDataSource"         <bean id="shibboleth.MySQLDataSource" +
-              class="%{mysql.class}"               class="%{mysql.class}" +
-              p:driverClassName="org.mariadb.jdbc.Driver"               p:driverClassName="org.mariadb.jdbc.Driver" +
-              p:url="%{mysql.url}"               p:url="%{mysql.url}" +
-              p:username="%{mysql.username}"               p:username="%{mysql.username}" +
-              p:password="%{mysql.password}"               p:password="%{mysql.password}" +
-              p:maxWait="15000"               p:maxWait="15000" +
-              p:testOnBorrow="true"               p:testOnBorrow="true" +
-              p:maxActive="100"               p:maxActive="100" +
-              p:maxIdle="100"               p:maxIdle="100" +
-              p:validationQuery="select 1"               p:validationQuery="select 1" +
-              p:validationQueryTimeout="5" />               p:validationQueryTimeout="5" />+
  
-        <bean id="shibboleth.JPAStorageService"       |         <bean id="JDBCStorageService" +  * [[wann_wurde_der_idp_neu_aufgesetztWann wurde der IdP neu aufgesetzt?]] 
-              class="org.opensaml.storage.impl.JPAStorageService"       |               parent="shibboleth.JDBCStorageService" +  * [[Installation jdbc-plugin und nashorn-plugin]] 
-              p:cleanupInterval="%{idp.storage.cleanupInterval:PT10M}"               p:cleanupInterval="%{idp.storage.cleanupInterval:PT10M}" +  * [[Upgrade openjdk 11 auf openjdk 17]] 
-              c:factory-ref="shibboleth.JPAStorageService.EntityManagerFactory" />       |       p:dataSource-ref="shibboleth.MySQLDataSource" />+  * [[Upgrade idp_4.x auf 4.3.3]] 
 +  * [[Upgrade Tomcat 9 auf 10]] 
 +  * [[Upgrade Shibboleth IdP auf 5.1.x]] 
 +  * [[Troubleshooting IdP 5]]
  
-        <bean id="shibboleth.JPAStorageService.EntityManagerFactory"       < 
-              class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">       < 
-            <property name="packagesToScan" value="org.opensaml.storage.impl"/>       < 
-            <property name="dataSource" ref="shibboleth.MySQLDataSource"/>       < 
-            <property name="jpaVendorAdapter" ref="shibboleth.JPAStorageService.JPAVendorAdapter"/>   < 
-            <property name="jpaDialect">       < 
-                <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />       < 
-            </property>       < 
-        </bean>       < 
-       < 
-        <bean id="shibboleth.JPAStorageService.JPAVendorAdapter"       < 
-              class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"       < 
-              p:generateDdl="true"       < 
-              p:database="MYSQL"       < 
-              p:databasePlatform="org.hibernate.dialect.MySQL5Dialect" />       < 
-          < 
  
- 
- 
-</code> 
-  - Falls in Ihrer ''conf/idp.properties'' noch ''shibboleth.JPAStorageService'' vorkommt, ersetzen Sie die Stellen durch ''JDBCStorageService''.<code properties>idp.session.StorageService = JDBCStorageService 
-idp.consent.StorageService = JDBCStorageService</code> 
 {{tag>idp5}} {{tag>idp5}}
  
  • Zuletzt geändert: vor 2 Wochen