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 [2023/06/13 15:13] – Überschrift aktualisiert Silke Meyerde:shibidp:config-storage [2025/05/20 09:35] (aktuell) – [Datenbank-Konfiguration] IdP5-Link zum Shib-Wiki Doreen Liebenau
Zeile 15: Zeile 15:
  
 ===== Datenbank-Konfiguration ===== ===== Datenbank-Konfiguration =====
-Wir zeigen die Vorgehensweise hier anhand von MariaDB. Es ist aber möglich, andere Datenbank-Software zu verwenden, etwa MySQL, Oracle oder Postgres, siehe hierzu die Dokumentation im [[https://wiki.shibboleth.net/confluence/display/IDP4/StorageConfiguration|Shibboleth-Wiki]]. Ein Beispiel für PostgreSQL findet sich bei [[https://www.switch.ch/aai/guides/idp/installation/#sqldatabase|SWITCHAAI]].+Wir zeigen die Vorgehensweise hier anhand von MariaDB. Es ist aber möglich, andere Datenbank-Software zu verwenden, etwa MySQL, Oracle oder Postgres, siehe hierzu die Dokumentation im [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199509576/StorageConfiguration|Shibboleth-Wiki]]. Ein Beispiel für PostgreSQL findet sich bei [[https://www.switch.ch/aai/guides/idp/installation/#sqldatabase|SWITCHAAI]].
  
 ==== Installation ==== ==== Installation ====
 +1. 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>
 root@idp:~# apt install mariadb-server mariadb-client libmariadb-java root@idp:~# apt install mariadb-server mariadb-client libmariadb-java
Zeile 24: Zeile 25:
  
 <code bash> <code bash>
-root@idp:~# ln -s /usr/share/java/mariadb-java-client.jar /var/lib/tomcat9/lib/mariadb-java-client.jar+root@idp:~# ln -s /usr/share/java/mariadb-java-client.jar /var/lib/tomcat10/lib/mariadb-java-client.jar
 </code> </code>
  
-Starten Sie Tomcat neu um die neuen Einstellungen zu aktivieren:+2. Starten Sie Tomcat neu um die neuen Einstellungen zu aktivieren:
  
 <code bash> <code bash>
-root@idp:~# systemctl restart tomcat9+root@idp:~# systemctl restart tomcat10
 </code> </code>
 +
 +3. Installieren Sie schließlich im IdP das JDBC-Plugin, falls noch nicht geschehen:<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 ====
Zeile 96: Zeile 99:
          
     <!-- Die folgenden Werte sind Default-Werte:     <!-- Die folgenden Werte sind Default-Werte:
-         p:maxActive="100" +           p:maxTotal="100" 
-         p:maxIdle="100"+           p:maxIdle="100"
          Es ist unter Umständen nötig, dass Sie diese Werte je nach Auslastung Ihres IdP anpassen,          Es ist unter Umständen nötig, dass Sie diese Werte je nach Auslastung Ihres IdP anpassen,
          ebenso wie die Konfiguration Ihres MySQL-Servers. -->          ebenso wie die Konfiguration Ihres MySQL-Servers. -->
- 
         <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:maxTotal="100
-              p:testOnBorrow="true+          p:maxIdle="100
-              p:maxActive="100+          p:maxWaitMillis="15000
-              p:maxIdle="100+          p:testOnBorrow="true
-              p:validationQuery="select 1" +          p:validationQuery="select 1" 
-              p:validationQueryTimeout="5" />+          p:validationQueryTimeout="5" />
  
         <bean id="JDBCStorageService"         <bean id="JDBCStorageService"
               parent="shibboleth.JDBCStorageService"               parent="shibboleth.JDBCStorageService"
               p:cleanupInterval="%{idp.storage.cleanupInterval:PT10M}"               p:cleanupInterval="%{idp.storage.cleanupInterval:PT10M}"
-              p:dataSource-ref="shibboleth.MySQLDataSource" />+              p:dataSource-ref="shibboleth.MySQLDataSource" />   
 +      
 </beans> </beans>
 </file> </file>
Zeile 123: Zeile 126:
 ==== Datenbank-Credentials hinterlegen ==== ==== Datenbank-Credentials hinterlegen ====
  
-Die Properties für den Datenbank-Zugriff werden jetzt noch in ''./conf/idp.properties'' ergänzt:+1. Die Shibboleth-Entwickler empfehlen nicht mehr das tomcat-pooling zu verwenden, sondern 
 +[[https://shibboleth.atlassian.net/wiki/spaces/IDPPLUGINS/pages/2989096970/JDBCStorageService#Connection-Pooling | DBCP 2]]. Die Properties für den Datenbank-Zugriff werden jetzt noch entsprechend in ''./conf/idp.properties'' ergänzt:
  
 <file java /opt/shibboleth-idp/conf/idp.properties> <file java /opt/shibboleth-idp/conf/idp.properties>
 # ... # ...
-mysql.class    = org.apache.tomcat.jdbc.pool.DataSource+mysql.class    = org.apache.commons.dbcp2.BasicDataSource
 mysql.url      = jdbc:mysql://localhost:3306/shibboleth mysql.url      = jdbc:mysql://localhost:3306/shibboleth
 mysql.username = shibboleth mysql.username = shibboleth
Zeile 133: Zeile 137:
 </file> </file>
  
-Das Passwort gehört wieder in die Datei ''./credentials/secrets.properties'':+2. Das Passwort gehört wieder in die Datei ''./credentials/secrets.properties'':
 <file /opt/shibboleth-idp/credentials/secrets.properties> <file /opt/shibboleth-idp/credentials/secrets.properties>
 mysql.password = GeHEIM007 mysql.password = GeHEIM007
 </file> </file>
  
-Starten Sie Tomcat neu, um sicherzustellen, dass die ''./conf/global.xml'' ohne Probleme eingelesen werden kann:+3. Starten Sie Tomcat neu, um sicherzustellen, dass die ''./conf/global.xml'' ohne Probleme eingelesen werden kann:
  
 <code bash> <code bash>
-root@idp:~# systemctl restart tomcat9+root@idp:~# systemctl restart tomcat10
 </code> </code>
  
Zeile 170: Zeile 174:
 </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 219: Zeile 224:
  
 Meist sind Usernamen in IdM-Systemen unabhängig von Groß- und Kleinschreibung: Nutzer*innen können ihre Anmeldenamen sowohl groß, als auch klein schreiben und sich damit erfolgreich anmelden. Die IdP-Datenbank unterscheidet jedoch zwischen Groß- und Kleinschreibung. Wir empfehlen daher, alle Usernamen im IdP in Kleinbuchstaben zu verarbeiten: Meist sind Usernamen in IdM-Systemen unabhängig von Groß- und Kleinschreibung: Nutzer*innen können ihre Anmeldenamen sowohl groß, als auch klein schreiben und sich damit erfolgreich anmelden. Die IdP-Datenbank unterscheidet jedoch zwischen Groß- und Kleinschreibung. Wir empfehlen daher, alle Usernamen im IdP in Kleinbuchstaben zu verarbeiten:
- 
-=== bis IdP 4.0.1 === 
-<file xml ./conf/c14n/simple-subject-c14n-config.xml> 
-   ... 
-   <util:constant id="shibboleth.c14n.simple.Lowercase" static-field="java.lang.Boolean.TRUE"/> 
-   ... 
-</file> 
  
 === ab IdP 4.1.0 === === ab IdP 4.1.0 ===
Zeile 252: Zeile 250:
 ... ...
 # 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
Zeile 279: Zeile 277:
 ===== User Consent zu Attributfreigabe bei Attribute Queries berücksichtigen ===== ===== User Consent zu Attributfreigabe bei Attribute Queries berücksichtigen =====
  
-Damit bei Attribute Queries Nutzer-Entscheidungen zur Attributfreigabe berücksichtigt werden, muss in ''./conf/intercept/consent-intercept-config.xml'' die entsprechende Condition gesetzt werden. Ab dem IdP 4.1.0 müssen Sie zunächst das [[https://wiki.shibboleth.net/confluence/display/IDP4/ConsentConfiguration|Intercept Consent-Modul aktivieren]], damit Sie die Datei überhaupt haben:<code bash>bin/module.sh -t idp.intercept.Consent || bin/module.sh -e idp.intercept.Consent</code>+Damit bei Attribute Queries Nutzer-Entscheidungen zur Attributfreigabe berücksichtigt werden, muss in ''./conf/intercept/consent-intercept-config.xml'' die entsprechende Condition gesetzt werden. Ab dem IdP 4.1.0 müssen Sie zunächst das [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199509862/ConsentConfiguration|Intercept Consent-Modul aktivieren]], damit Sie die Datei überhaupt haben:<code bash>bin/module.sh -t idp.intercept.Consent || bin/module.sh -e idp.intercept.Consent</code>
  
 Dann modifizieren Sie die Datei wie folgt: Dann modifizieren Sie die Datei wie folgt:
Zeile 293: Zeile 291:
  
 <code bash> <code bash>
-root@idp:~# systemctl restart tomcat9+root@idp:~# systemctl restart tomcat10
 </code> </code>
  
 ===== Weitergabe der Persistent ID ===== ===== Weitergabe der Persistent ID =====
  
-Um in den Fällen, in denen ein anfragender SP keine Präferenzen bzgl. Name ID Format signalisiert (Metadaten und/oder AuthnRequest), eine Gewichtung festzulegen (siehe hierzu die [[https://wiki.shibboleth.net/confluence/display/IDP30/NameIDGenerationConfiguration#NameIDGenerationConfiguration-FormatSelectionFormatSelection|Doku im Shibboleth-Wiki]]), kann die SAML2.SSO-Bean-Definition **bei Bedarf**  entsprechend erweitert werden:+Um in den Fällen, in denen ein anfragender SP keine Präferenzen bzgl. Name ID Format signalisiert (Metadaten und/oder AuthnRequest), eine Gewichtung festzulegen (siehe hierzu die [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199507810/NameIDGenerationConfiguration|Doku im Shibboleth-Wiki]]), kann die SAML2.SSO-Bean-Definition **bei Bedarf**  entsprechend erweitert werden:
  
 <file xml /conf/relying-party.xml> <file xml /conf/relying-party.xml>
Zeile 321: Zeile 319:
  
 <code bash> <code bash>
-root@idp:/opt/shibboleth-idp# systemctl restart tomcat9+root@idp:/opt/shibboleth-idp# systemctl restart tomcat10
 </code> </code>
  
  • Zuletzt geändert: vor 2 Jahren