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
de:shibidp:config-storage [2021/11/25 15:48] – [Umstellung auf SAML pairwise-id] Ergänzung BASE32 Encoding im Data Connector Silke Meyerde:shibidp:config-storage [2023/07/31 12:10] (aktuell) – [Generierung und Speicherung] klarerer Hinweise auf randomness des Salt Silke Meyer
Zeile 18: Zeile 18:
  
 ==== Installation ==== ==== Installation ====
 +Im einfachsten Fall installieren Sie auf dem IdP einen lokalen Datenbank-Server. Sie können natürlich auch entfernte Datenbanken über das Netzwerk einbinden.
  
 <code bash> <code bash>
Zeile 32: Zeile 33:
 root@idp:~# systemctl restart tomcat9 root@idp:~# systemctl restart tomcat9
 </code> </code>
 +
 +Installieren Sie schließlich im IdP (ab Version 4.2!) das JDBC-Plugin:<code bash>root@idp:~# /opt/shibboleth-idp/bin/plugin.sh -I net.shibboleth.plugin.storage.jdbc</code>
  
 ==== Datenbank und Tabellen anlegen ==== ==== Datenbank und Tabellen anlegen ====
  
 Die Datenbank und der Datenbank-Benutzeraccount müssen manuell erstellt werden. Dann werden noch zwei Tabellen angelegt:  Die Datenbank und der Datenbank-Benutzeraccount müssen manuell erstellt werden. Dann werden noch zwei Tabellen angelegt: 
-  * ''StorageRecords'' für Sessions und User Consent-Informationen+  * ''StorageRecords'' für Sessions und User Consent-Informationen (die COLLATION muss case-sensitive sein, hier utf8_bin)
   * ''shibpid'' für die persistentIds   * ''shibpid'' für die persistentIds
  
Zeile 53: Zeile 56:
   version bigint(20) NOT NULL,   version bigint(20) NOT NULL,
   PRIMARY KEY (context, id)   PRIMARY KEY (context, id)
-);+COLLATE utf8_bin;
  
 mysql> CREATE TABLE IF NOT EXISTS shibpid ( mysql> CREATE TABLE IF NOT EXISTS shibpid (
Zeile 74: Zeile 77:
 </code> </code>
  
-==== JPAStorageService konfigurieren ====+==== JDBCStorageService konfigurieren ====
  
-Der DB-Zugriff wird über den [[https://wiki.shibboleth.net/confluence/display/IDP4/StorageConfiguration#StorageConfiguration-JPAStorageService|JPAStorageService]] gekapselt. Dieser wird in ''./conf/global.xml'' definiert. Diese Datei ist im Auslieferungszustand leer (bis auf Kommentare). Füllen Sie sie wie folgt:+Der DB-Zugriff wird über den [[https://shibboleth.atlassian.net/wiki/spaces/IDPPLUGINS/pages/2989096970/JDBCStorageService|JDBCStorageService]] hergestellt. Dieser wird in ''./conf/global.xml'' definiert. Diese Datei ist im Auslieferungszustand leer (bis auf Kommentare). Füllen Sie sie wie folgt:
  
 <file xml ./conf/global.xml> <file xml ./conf/global.xml>
Zeile 114: Zeile 117:
               p:validationQueryTimeout="5" />               p:validationQueryTimeout="5" />
  
-        <bean id="shibboleth.JPAStorageService+        <bean id="JDBCStorageService
-              class="org.opensaml.storage.impl.JPAStorageService"+              parent="shibboleth.JDBCStorageService"
               p:cleanupInterval="%{idp.storage.cleanupInterval:PT10M}"               p:cleanupInterval="%{idp.storage.cleanupInterval:PT10M}"
-              c:factory-ref="shibboleth.JPAStorageService.EntityManagerFactory" /> +              p:dataSource-ref="shibboleth.MySQLDataSource" />
- +
-        <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" /> +
 </beans> </beans>
 </file> </file>
Zeile 187: Zeile 173:
 </file> </file>
  
-Der Salt-Hash, mit dem die persistentIds generiert werden, wird aus Sicherheitsgründen in der zugriffsbeschränkten Passwortdatei ''./credentials/secrets.properties'' hinterlegt. Er sollte möglichst lang und beliebig sein und mit niemandem geteilt werden.+Der Salt-Hash, mit dem die persistentIds generiert werden, wird aus Sicherheitsgründen in der zugriffsbeschränkten Passwortdatei ''./credentials/secrets.properties'' hinterlegt. Er sollte möglichst beliebig, also zufällig generiert, und möglichst lang sein und mit niemandem geteilt werden.
  
 <file properties /opt/shibboleth-idp/credentials/secrets.properties> <file properties /opt/shibboleth-idp/credentials/secrets.properties>
 +# Bitte durch einen zufällig generierten Salt ersetzen!
 idp.persistentId.salt = my-very-very-long-hash idp.persistentId.salt = my-very-very-long-hash
  
Zeile 269: Zeile 256:
 ... ...
 # Set to "shibboleth.StorageService" for server-side storage of user sessions # Set to "shibboleth.StorageService" for server-side storage of user sessions
-idp.session.StorageService = shibboleth.JPAStorageService+idp.session.StorageService = JDBCStorageService
  
 # Set to "shibboleth.StorageService" or custom bean for alternate storage of consent # Set to "shibboleth.StorageService" or custom bean for alternate storage of consent
-idp.consent.StorageService = shibboleth.JPAStorageService+idp.consent.StorageService = JDBCStorageService
  
 # Set to "shibboleth.consent.AttributeConsentStorageKey" to use an attribute # Set to "shibboleth.consent.AttributeConsentStorageKey" to use an attribute
  • Zuletzt geändert: vor 2 Jahren