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
Nächste ÜberarbeitungBeide Seiten der Revision
de:shibidp3storage [2017/06/20 16:17] Raoul Gunnar Boreniusde:shibidp3storage [2019/01/21 11:32] Wolfgang Pempe
Zeile 1: Zeile 1:
-====== Server-Side-Storage und Persistent Identifier ======+====== Server-Side-Storage, Sessions, User Consent und Persistent Identifier ======
  
-Per default werden Informationen zu User Consent (ehemals uApprove) und Persistent IDs client-seitig in Cookies abgelegt. Dies kann aber nur als initiale "Notlösung" betrachtet werden, damit der IdP auch ohne angeschlossene SQL-Datenbank funktioniert. In einem fertigen Produktivszenario ist das Abspeichern dieser Informationen auf Serverseite unbedingt zu empfehlen, da nur damit erweiterte SAML-Funktionalitäten möglich sind (z.B. persistentId, +Per default werden Informationen zu Sessions, User Consent (insbesondere bzgl. Attributfreigabe) und Persistent IDs client-seitig in Cookies abgelegt. Dies kann aber nur als initiale "Notlösung" betrachtet werden, damit der IdP auch ohne angeschlossene SQL-Datenbank funktioniert. In einem fertigen Produktivszenario ist das Abspeichern dieser Informationen auf Serverseite unbedingt zu empfehlen, da nur damit erweiterte SAML-Funktionalitäten möglich sind (z.B. persistentId, Single-Logout).  
-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/Nutzerin hinsichtlich Attributfreigabe berücksichtigt werden!**
  
 ===== Installation Datenbanksoftware ===== ===== Installation Datenbanksoftware =====
Zeile 73: Zeile 74:
 Der DB-Zugriff wird über den [[https://wiki.shibboleth.net/confluence/display/IDP30/StorageConfiguration|JPAStorageService]] gekapselt. Dieser wird in ./conf/global.xml definiert. Der DB-Zugriff wird über den [[https://wiki.shibboleth.net/confluence/display/IDP30/StorageConfiguration|JPAStorageService]] gekapselt. Dieser wird in ./conf/global.xml definiert.
 Diese Datei ist im Auslieferungszustand leer (bis auf Kommentare). Ersetzen Sie sie durch die [[de:global_xml-example|hier bereitgestellte Version]]. Diese Datei ist im Auslieferungszustand leer (bis auf Kommentare). Ersetzen Sie sie durch die [[de:global_xml-example|hier bereitgestellte Version]].
- 
-Starten Sie Tomcat neu, um sicherzustellen, dass die global.xml ohne Probleme eingelesen werden kann (dabei Logdateien mitverfolgen!): 
-<code bash> 
-root@idp:/opt/shibboleth-idp# service tomcat8 restart 
-</code> 
- 
-Hinweis: bei älteren Java Versionen führt der Parameter "p:validationQueryTimeout" zu einer Fehlermeldung, in dem Fall einfach weglassen und Tomcat neu starten. 
  
  
Zeile 96: Zeile 90:
 mysql.password = GeHEIM007 mysql.password = GeHEIM007
 </file> </file>
-Starten Sie Tomcat neu um die neuen Einstellungen zu aktivieren (dabei Logdateien mitverfolgen!):+ 
 +Starten Sie Tomcat neuum sicherzustellen, dass die global.xml ohne Probleme eingelesen werden kann (dabei Logdateien mitverfolgen!):
 <code bash> <code bash>
 root@idp:/opt/shibboleth-idp# service tomcat8 restart root@idp:/opt/shibboleth-idp# service tomcat8 restart
 </code> </code>
 +
 +Hinweis: bei älteren Java Versionen führt der Parameter "p:validationQueryTimeout" zu einer Fehlermeldung, in dem Fall einfach weglassen und Tomcat neu starten.
 +
  
 ===== PersistentId Konfiguration ===== ===== PersistentId Konfiguration =====
Zeile 176: Zeile 174:
 Damit werden die Usernamen vom IdP nur noch in Kleinbuchstabenform verarbeitet und in die Datenbank geschrieben. Damit werden die Usernamen vom IdP nur noch in Kleinbuchstabenform verarbeitet und in die Datenbank geschrieben.
  
-===== Session-Informationen und User Consent in DB ablegen =====+===== 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 SingleLogout- +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. Außerdem können nun bei Attribute Queries Nutzer-Entscheidungen zu Attributfreigaben berücksichtigt werden (siehe unten).
-Unterstützung im IdP ermöglicht:+
  
 <file properties /opt/shibboleth-idp/conf/idp.properties> <file properties /opt/shibboleth-idp/conf/idp.properties>
Zeile 191: Zeile 188:
 # Set to "shibboleth.consent.AttributeConsentStorageKey" to use an attribute # Set to "shibboleth.consent.AttributeConsentStorageKey" to use an attribute
 # 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 205: Zeile 204:
 # 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
 +</file>
 +
 +===== 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:
 +
 +<file xml ./conf/intercept/consent-intercept-config.xml>
 +    <!--
 +    Condition to evaluate to apply attribute-release consent to attribute queries.
 +    -->
 +    <bean id="shibboleth.consent.AttributeQuery.Condition" parent="shibboleth.Conditions.TRUE" />
 </file> </file>
  
Zeile 213: Zeile 223:
 ===== 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), 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:
  
 <file xml /conf/relying-party.xml> <file xml /conf/relying-party.xml>
Zeile 241: Zeile 251:
 persistentId übertragen wird. persistentId übertragen wird.
  
-Falls Sie die persistentId nur an ausgewählte SPs übertragen wollen, finden Sie Beispiele unter [[de:shibidp3pidspecials|Persistent ID - Sonderfälle]].+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, sofern diese übertragen wurde, zusammen mit den übertragenen Attributen angezeigt. 
 + 
 +Falls die persistentId nur an ausgewählte SPs übertragen werden sollso finden sich [[[[de:shibidp3pidspecials|hier einige Beispiele]].
  
  
 ** Weiter geht es mit [[de:shibidp3slo|Single Logout]]. ** ** Weiter geht es mit [[de:shibidp3slo|Single Logout]]. **