Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
de:shibidp:config-storage [2021/08/17 11:44] – Wolfgang Pempe | de:shibidp:config-storage [2024/06/17 08:23] (aktuell) – [Weitergabe der Persistent ID] Doreen Liebenau | ||
---|---|---|---|
Zeile 18: | Zeile 18: | ||
==== 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 / | + | root@idp:~# ln -s / |
</ | </ | ||
- | 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 | + | root@idp:~# systemctl restart |
</ | </ | ||
+ | |||
+ | 3. Installieren Sie schließlich im IdP das JDBC-Plugin:< | ||
==== 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: | ||
- | * '' | + | * '' |
* '' | * '' | ||
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: | ||
</ | </ | ||
- | ==== JPAStorageService | + | ==== JDBCStorageService |
- | Der DB-Zugriff wird über den [[https://wiki.shibboleth.net/ | + | Der DB-Zugriff wird über den [[https:// |
<file xml ./ | <file xml ./ | ||
Zeile 114: | Zeile 117: | ||
p: | p: | ||
- | <bean id="shibboleth.JPAStorageService" | + | <bean id="JDBCStorageService" |
- | | + | |
p: | p: | ||
- | | + | |
- | + | ||
- | <bean id=" | + | |
- | class=" | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | <bean class=" | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | <bean id=" | + | |
- | class=" | + | |
- | p: | + | |
- | p: | + | |
- | p: | + | |
</ | </ | ||
</ | </ | ||
Zeile 140: | Zeile 126: | ||
==== Datenbank-Credentials hinterlegen ==== | ==== Datenbank-Credentials hinterlegen ==== | ||
- | Die Properties für den Datenbank-Zugriff werden jetzt noch in '' | + | 1. Die Properties für den Datenbank-Zugriff werden jetzt noch in '' |
<file java / | <file java / | ||
Zeile 150: | Zeile 136: | ||
</ | </ | ||
- | Das Passwort gehört wieder in die Datei '' | + | 2. Das Passwort gehört wieder in die Datei '' |
<file / | <file / | ||
mysql.password = GeHEIM007 | mysql.password = GeHEIM007 | ||
</ | </ | ||
- | Starten Sie Tomcat neu, um sicherzustellen, | + | 3. Starten Sie Tomcat neu, um sicherzustellen, |
<code bash> | <code bash> | ||
- | root@idp:~# systemctl restart | + | root@idp:~# systemctl restart |
</ | </ | ||
Zeile 177: | Zeile 163: | ||
<file properties / | <file properties / | ||
idp.persistentId.sourceAttribute = uid | idp.persistentId.sourceAttribute = uid | ||
- | # idp.persistentId.useUnfilteredAttributes | + | # BASE64 will match V2 values, we recommend BASE32 encoding for new installs. |
+ | idp.persistentId.encoding | ||
# To use a database, use shibboleth.StoredPersistentIdGenerator | # To use a database, use shibboleth.StoredPersistentIdGenerator | ||
Zeile 186: | Zeile 173: | ||
</ | </ | ||
- | Der Salt-Hash, mit dem die persistentIds generiert werden, wird aus Sicherheitsgründen in der zugriffsbeschränkten Passwortdatei '' | + | Der Salt-Hash, mit dem die persistentIds generiert werden, wird aus Sicherheitsgründen in der zugriffsbeschränkten Passwortdatei '' |
<file properties / | <file 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 263: | Zeile 251: | ||
===== Session-Informationen und User Consent ===== | ===== Session-Informationen und User Consent ===== | ||
- | Nachdem Datenbankverbindung und persistentId aktiviert sind, können diese nun für die Speicherung von Session- und User Consent-Informationen genutzt werden. Dadurch wird als netter Nebeneffekt auch [[:de:shibidp3slo|SingleLogout-Unterstützung]] im IdP ermöglicht. | + | Nachdem Datenbankverbindung und persistentId aktiviert sind, können diese nun für die Speicherung von Session- und User Consent-Informationen genutzt werden. Dadurch wird als netter Nebeneffekt auch [[de:shibidp: |
<file properties / | <file properties / | ||
... | ... | ||
# Set to " | # Set to " | ||
- | idp.session.StorageService = shibboleth.JPAStorageService | + | idp.session.StorageService = JDBCStorageService |
# Set to " | # Set to " | ||
- | idp.consent.StorageService = shibboleth.JPAStorageService | + | idp.consent.StorageService = JDBCStorageService |
# Set to " | # Set to " | ||
Zeile 309: | Zeile 297: | ||
<code bash> | <code bash> | ||
- | root@idp:~# systemctl restart | + | root@idp:~# systemctl restart |
</ | </ | ||
Zeile 337: | Zeile 325: | ||
<code bash> | <code bash> | ||
- | root@idp:/ | + | root@idp:/ |
</ | </ | ||
Zeile 345: | Zeile 333: | ||
Falls die persistentId nur an ausgewählte SPs übertragen werden soll, so finden sich [[de: | Falls die persistentId nur an ausgewählte SPs übertragen werden soll, so finden sich [[de: | ||
+ | |||
+ | ===== Umstellung auf SAML pairwise-id ===== | ||
+ | Die persistentID und das funktionsanaloge, | ||
+ | * Die pairwise-id hat einen Scope. | ||
+ | * Die Werte werden mit BASE32 statt mit BASE64 kodiert. Sie dürfen also weniger Zeichen enthalten als alte persistentIDs und sind case-insensitive zu behandeln. | ||
+ | |||
+ | Für die Umstellung der persistentID auf die pairwise-id gibt es keinen perfekten Weg. Wir empfehlen folgendes Vorgehen, mit dem Sie vermeiden, alle Service Provider die persistentIDs bestehender Accounts umschreiben zu lassen: | ||
+ | * Ändern Sie im IdP das Encoding der persistentIDs auf BASE32. Damit erreichen Sie, dass **//neu generierte// | ||
+ | # BASE64 will match V2 values, we recommend BASE32 encoding for new installs. | ||
+ | idp.persistentId.encoding = BASE32</ | ||
+ | * Setzen Sie auch beim entsprechenden Data Connector in '' | ||
+ | < | ||
+ | xsi: | ||
+ | generatedAttributeID=" | ||
+ | salt=" | ||
+ | encoding=" | ||
+ | queryTimeout=" | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | * Bereits **bestehende persistentIDs** lassen Sie in der Datenbank bestehen, wie sie sind. Aus diesen persistentIDs werden dann zwar nicht standardkonforme SAML pairwise-ids gebildet. Wir gehen allerdings nicht davon aus, dass Service Provider, die die pairwise-id entgegennehmen, | ||
+ | * Übermitteln Sie für die pairwise-id den Wert, der persistentID **mit Scope**. | ||
{{tag> | {{tag> |