Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision | ||
de:shibidp3storage [2017/02/27 15:15] – Raoul Gunnar Borenius | de:shibidp3storage [2019/04/15 16:23] – Wolfgang Pempe | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Server-Side-Storage und Persistent Identifier ====== | + | ====== Server-Side-Storage, Sessions, User Consent |
- | Per default werden Informationen zu User Consent (ehemals uApprove) und Persistent IDs client-seitig in cookies | + | Per default werden Informationen zu Sessions, |
- | Single-Logout). | + | |
+ | **Darüber hinaus kann nur auf diese Weise sichergestellt werden, dass bei Attribute Queries (SP fragt anhand eines Name Identifiers direkt beim IdP Nutzerdaten ab), die Entscheidungen des/der Nutzers/ | ||
===== Installation Datenbanksoftware ===== | ===== Installation Datenbanksoftware ===== | ||
- | ====MySQL==== | + | ==== MySQL ==== |
+ | |||
+ | === Debian 8 === | ||
- | ===Debian 8=== | ||
<code bash> | <code bash> | ||
- | root@idp:~# apt-get install mysql-server mysql-client libmysql-java | + | root@idp:~# apt-get install mysql-server mysql-client libmysql-java |
</ | </ | ||
- | Damit der Tomcat die MySQL-Java-Library beim Starten einliest (damit der IdP sie dann verwenden kann) wird | + | Damit der Tomcat die MySQL-Java-Library beim Starten einliest (d.h. der IdP sie dann verwenden kann), wird diese üblicherweise in / |
- | diese üblicherweise in / | + | |
<code bash> | <code bash> | ||
Zeile 21: | Zeile 21: | ||
Starten Sie Tomcat neu um die neuen Einstellungen zu aktivieren (dabei Logdateien mitverfolgen!): | Starten Sie Tomcat neu um die neuen Einstellungen zu aktivieren (dabei Logdateien mitverfolgen!): | ||
+ | |||
<code bash> | <code bash> | ||
root@idp:~# service tomcat8 restart | root@idp:~# service tomcat8 restart | ||
</ | </ | ||
- | ====PostgreSQL==== | + | ==== PostgreSQL ==== |
+ | |||
+ | Siehe hierzu einstweilen die [[https:// | ||
- | Siehe hierzu einstweilen die [[https:// | ||
- | Hierzu jedenfalls die entsprechende Java JDBC Komponente installieren (Debian/ | ||
<code bash> | <code bash> | ||
root@idp:~# apt-get install libpostgresql-jdbc-java | root@idp:~# apt-get install libpostgresql-jdbc-java | ||
</ | </ | ||
- | ===RHEL=== | + | |
+ | === RHEL === | ||
<code bash> | <code bash> | ||
yum install postgresql-server postgresql | yum install postgresql-server postgresql | ||
Zeile 39: | Zeile 42: | ||
===== Datenbank-Konfiguration ===== | ===== Datenbank-Konfiguration ===== | ||
- | Zunächst ist eine logische Datenbank zu erstellen. Hierzu müssen, wie vom IdP 2.x gewohnt, zunächst nur die Tabellen für die Angaben zur Persistent Id angelegt werden, die Tabelle | + | Zunächst ist eine logische Datenbank zu erstellen. Hierzu müssen, wie vom IdP 2.x gewohnt, zunächst nur die Tabellen für die Angaben zur Persistent Id angelegt werden, die Tabelle " |
- | Hier ein Beispiel für MySQL, wobei hier vorrausschauend | + | Hier ein Beispiel für MySQL, wobei hier vorausschauend |
<code mysql> | <code mysql> | ||
Zeile 71: | Zeile 74: | ||
Ein Beispiel für PostgreSQL findet sich beim [[https:// | Ein Beispiel für PostgreSQL findet sich beim [[https:// | ||
- | Der DB-Zugriff wird über den [[https:// | + | Der DB-Zugriff wird über den [[https:// |
- | Diese Datei ist im auslieferungszustand | + | |
- | + | ||
- | + | ||
- | Hinweis: bei älteren Java Versionen führt der Parameter " | + | |
PostgreSQL: Siehe [[https:// | PostgreSQL: Siehe [[https:// | ||
- | https:// | + | [[https:// |
Die Properties für den DB-Zugriff werden jetzt noch in idp.properties ergänzt (bitte auf die Tomcat-Version achten!): | Die Properties für den DB-Zugriff werden jetzt noch in idp.properties ergänzt (bitte auf die Tomcat-Version achten!): | ||
Zeile 88: | Zeile 86: | ||
# Tomcat8 | # Tomcat8 | ||
mysql.class | mysql.class | ||
- | mysql.url | + | # Achtung: ggf. kann es zu einem Timezone-Bug kommen. Dann ist die Angabe des Timezone-Parameters erforderlich, |
+ | mysql.url | ||
mysql.username = shibboleth | mysql.username = shibboleth | ||
mysql.password = GeHEIM007 | mysql.password = GeHEIM007 | ||
</ | </ | ||
+ | |||
+ | Starten Sie Tomcat neu, um sicherzustellen, | ||
+ | |||
+ | <code bash> | ||
+ | root@idp:/ | ||
+ | </ | ||
+ | |||
+ | Hinweis: bei älteren Java Versionen führt der Parameter " | ||
===== PersistentId Konfiguration ===== | ===== PersistentId Konfiguration ===== | ||
Zeile 97: | Zeile 104: | ||
Die persistentId wird in drei Schritten aktiviert: | Die persistentId wird in drei Schritten aktiviert: | ||
- | Erstens wird festgelegt wie die Id generiert und abgelegt werden soll: | + | Erstens wird festgelegt, wie die Id generiert und abgelegt werden soll: |
<file properties / | <file properties / | ||
Zeile 104: | Zeile 111: | ||
# in den allermeisten Fällen wird das immer ' | # in den allermeisten Fällen wird das immer ' | ||
# Attribut ' | # Attribut ' | ||
- | idp.persistentId.sourceAttribute = uid | + | idp.persistentId.sourceAttribute = uid |
# | # | ||
# Do *NOT* share the salt with other people, it's like divulging your private key. | # Do *NOT* share the salt with other people, it's like divulging your private key. | ||
Zeile 118: | Zeile 125: | ||
Hinweise zur Wahl des Quellatributs: | Hinweise zur Wahl des Quellatributs: | ||
- | * Als Quellattribut aus dem IdM für die persistentId | + | * Als Quellattribut aus dem IdM für die persistentId |
- | * eine Möglichkeit, | + | * Eine Möglichkeit, |
- | * Beispiele zur Generierung finden Sie unter [[de: | + | * Beispiele zur Generierung finden Sie unter [[:de: |
Zweitens wird die Java-Bean für die Generierung aktiviert indem der Eintrag für shibboleth.SAML2PersistentGenerator ent-kommentieren wird: | Zweitens wird die Java-Bean für die Generierung aktiviert indem der Eintrag für shibboleth.SAML2PersistentGenerator ent-kommentieren wird: | ||
Zeile 157: | Zeile 164: | ||
</ | </ | ||
</ | </ | ||
- | ===== Session-Informationen und User Consent in DB ablegen ===== | ||
- | Nachdem Datenbankverbindung und persistentId aktiviert sind können diese nun für die Speicherung von Session-und | + | Viertens: meist sind Usernamen im IdM-System unabhängig von Gross- und Kleinschreibung. D.h. die User können Ihren Loginnamen sowohl in Gross- als auch Kleinschreibung angeben und damit einen erfolgreichen Login durchführen. Allerdings führt dieses später zu Problemen beim Verwalten der Usernamen in der lokalen IdP-Datenbank da diese Gross- und Kleinschreibung unterscheidet. Wir empfehlen daher den Usernamen in diesen Fällen im IdP in Kleinbuchstaben umzuwandeln: |
- | Unterstützung im IdP ermöglicht: | + | |
+ | <file xml ./ | ||
+ | ... | ||
+ | < | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Damit werden die Usernamen vom IdP nur noch in Kleinbuchstabenform verarbeitet und in die Datenbank geschrieben. | ||
+ | |||
+ | ===== 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 [[: | ||
<file properties / | <file properties / | ||
Zeile 168: | Zeile 185: | ||
# Set to " | # Set to " | ||
- | idp.consent.StorageService = shibboleth.JPAStorageService | + | idp.consent.StorageService = shibboleth.JPAStorageService |
# Set to " | # Set to " | ||
# to key user consent storage records (and set the attribute name) | # to key user consent storage records (and set the attribute name) | ||
- | idp.consent.userStorageKey = shibboleth.consent.AttributeConsentStorageKey | + | idp.consent.attribute-release.userStorageKey = shibboleth.consent.PrincipalConsentStorageKey |
- | idp.consent.userStorageKeyAttribute = %{idp.persistentId.sourceAttribute} | + | idp.consent.attribute-release.userStorageKeyAttribute = %{idp.persistentId.sourceAttribute} |
+ | idp.consent.terms-of-use.userStorageKey = shibboleth.consent.PrincipalConsentStorageKey | ||
+ | idp.consent.terms-of-use.userStorageKeyAttribute = %{idp.persistentId.sourceAttribute} | ||
# Flags controlling how built-in attribute consent feature operates | # Flags controlling how built-in attribute consent feature operates | ||
Zeile 186: | Zeile 205: | ||
# Verfügung steht sollte dieses sinnvolle Feature aktiviert werden! | # Verfügung steht sollte dieses sinnvolle Feature aktiviert werden! | ||
idp.consent.compareValues = true | idp.consent.compareValues = true | ||
+ | </ | ||
- | # damit der User eine ausführliche Logout-Rückmeldung vom IdP bekommt: | + | ===== User Consent zu Attributfreigabe bei Attribute Queries berücksichtigen ===== |
- | + | ||
- | # Whether to lookup metadata, etc. for every SP involved in a logout | + | Damit bei Attribute Queries Nutzer-Entscheidungen zur Attributfreigabe berücksichtigt werden, muss in ./ |
- | # for use by user interface logic; adds overhead so off by default. | + | |
- | idp.logout.elaboration | + | <file xml ./ |
+ | < | ||
+ | Condition to evaluate to apply attribute-release consent to attribute queries. | ||
+ | | ||
+ | <bean id=" | ||
</ | </ | ||
- | Starten Sie Tomcat neu um die neuen Einstellungen zu aktivieren (dabei Logdateien mitverfolgen!): | + | Starten Sie Tomcat neu, um die neuen Einstellungen zu aktivieren (dabei Logdateien mitverfolgen!): |
<code bash> | <code bash> | ||
root@idp:/ | root@idp:/ | ||
</ | </ | ||
+ | |||
===== Weitergabe der Persistent ID ===== | ===== Weitergabe der Persistent ID ===== | ||
- | Um die persistentId für alle SPs freizugeben muss die SAML2.SSO-Bean-Definition erweitert werden: | + | Um in den Fällen, in denen ein anfragender SP keine Präferenzen bzgl. Name ID Format signalisiert (Metadaten und/oder AuthnRequest), |
<file xml / | <file xml / | ||
Zeile 209: | Zeile 235: | ||
< | < | ||
< | < | ||
- | < | + | < |
- | | + | |
| | ||
< | < | ||
Zeile 220: | Zeile 246: | ||
</ | </ | ||
- | Starten Sie Tomcat neu um die neuen Einstellungen zu aktivieren (dabei Logdateien mitverfolgen!): | + | Starten Sie Tomcat neu, um die neuen Einstellungen zu aktivieren (dabei Logdateien mitverfolgen!): |
<code bash> | <code bash> | ||
root@idp:/ | root@idp:/ | ||
</ | </ | ||
- | Testen Sie nochmal | + | Testen Sie nochmals |
- | persistentId übertragen wird. | + | |
+ | HINWEIS: Da die persistendId kein SAML-Attribut ist, wird Ihnen diese nach dem Login am IdP nicht in der Liste der zu übertragenden Attribute angezeigt. Erst wenn Sie wieder am Test-SP sind wird Ihnen dort die persistentId, | ||
+ | |||
+ | Falls die persistentId nur an ausgewählte SPs übertragen werden soll, so finden sich [[: | ||
- | Falls Sie die persistentId nur an ausgewählte SPs übertragen wollen finden Sie Beispiele unter [[de:shibidp3pidspecials|Persistent ID - Sonderfälle]]. | + | **Weiter geht es mit [[:de:shibidp3slo|Single Logout]]. ** |
- | ** Weiter geht es mit [[de: |