Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision |
de:shibidp:config-storage [2020/04/14 16:25] – [Weitergabe der Persistent ID] Silke Meyer | de:shibidp:config-storage [2021/08/17 11:44] – Wolfgang Pempe |
---|
| <- de:shibidp:config-tou|Nutzungsbedingungen ^ de:shibidp:uebersicht|Überblick: Tutorial zur IdP-Inbetriebnahme ^ de:shibidp:config-slo|Single Logout -> |
~~NOTOC~~ | ~~NOTOC~~ |
====== Server-Side Storage ====== | ====== Server-Side Storage und persistent Id ====== |
{{INLINETOC 2}} | {{INLINETOC 2}} |
| |
Wählen Sie ein Quellattribut aus Ihrem IdM, das **über die Zeit eindeutig** bleibt! Bei OpenLDAP ist das oft die ''uid'', bei Active Directory der ''sAMAccountName'' oder ''cn''. Wenn Sie diese Attribute für neue Accounts wiederverwenden, dann //müssen// Sie ein anderes IdM-Attribut zur Generierung der persistentId verwenden. | Wählen Sie ein Quellattribut aus Ihrem IdM, das **über die Zeit eindeutig** bleibt! Bei OpenLDAP ist das oft die ''uid'', bei Active Directory der ''sAMAccountName'' oder ''cn''. Wenn Sie diese Attribute für neue Accounts wiederverwenden, dann //müssen// Sie ein anderes IdM-Attribut zur Generierung der persistentId verwenden. |
| |
Ein möglicher Workaround: Sie können sich in der ''./conf/attribute-resolver.xml'' ein neues Attribut definieren. Dieses Attribut könnte aus einem Hash aus uid und dem Anlegedatum des Accounts bestehen. Beispiele zur Generierung finden Sie unter [[:de:shibidp3pidspecials|Persistent ID - Sonderfälle]]. | Ein möglicher Workaround: Sie können sich in der ''./conf/attribute-resolver.xml'' ein neues Attribut definieren. Dieses Attribut könnte aus einem Hash aus uid und dem Anlegedatum des Accounts bestehen. Beispiele zur Generierung finden Sie unter [[de:shibidp:config-pidspecials|Persistent ID - Sonderfälle]]. |
| |
==== Generierung und Speicherung ==== | ==== Generierung und Speicherung ==== |
Das gewählte Quellattribut legen Sie in ''./conf/saml-nameid.properties'' fest: Schauen Sie in ''.conf/attribute-resolver.xml'' nach, welche "id" das Quellattribut hat und tragen Sie sie hier ein. Es wird //nicht// der originale Attribut-Name aus dem IdM verwendet! Der Hash sollte möglichst lang und beliebig sein und mit niemandem geteilt werden. Schließlich stellen Sie hier noch ein, dass die persistenIds in der MySQL-Datenbank gespeichert werden sollen. | |
| Das gewählte Quellattribut legen Sie in ''./conf/saml-nameid.properties'' fest: Schauen Sie in ''./conf/attribute-resolver.xml'' nach, welche "id" das Quellattribut hat und tragen Sie sie hier ein. Es wird //nicht// der originale Attribut-Name aus dem IdM verwendet! Hier stellen Sie auch ein, dass die persistentIds in der MySQL-Datenbank gespeichert werden sollen. |
| |
<file properties /opt/shibboleth-idp/conf/saml-nameid.properties> | <file properties /opt/shibboleth-idp/conf/saml-nameid.properties> |
idp.persistentId.sourceAttribute = uid | idp.persistentId.sourceAttribute = uid |
# idp.persistentId.useUnfilteredAttributes = true | # idp.persistentId.useUnfilteredAttributes = true |
# Do *NOT* share the salt with other people, it's like divulging your private key. | |
# idp.persistentId.algorithm = SHA | |
idp.persistentId.salt = MöglichstBeliebigUndGeHeim-mindestens-16bytes | |
| |
# To use a database, use shibboleth.StoredPersistentIdGenerator | # To use a database, use shibboleth.StoredPersistentIdGenerator |
# For basic use, set this to a JDBC DataSource bean name: | # For basic use, set this to a JDBC DataSource bean name: |
idp.persistentId.dataSource = shibboleth.MySQLDataSource | idp.persistentId.dataSource = shibboleth.MySQLDataSource |
| |
</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. |
| |
| <file properties /opt/shibboleth-idp/credentials/secrets.properties> |
| idp.persistentId.salt = my-very-very-long-hash |
| |
| </file> |
| |
| |
==== Generator anschalten ==== | ==== Generator anschalten ==== |
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> | <file xml ./conf/c14n/simple-subject-c14n-config.xml> |
... | ... |
<util:constant id="shibboleth.c14n.simple.Lowercase" static-field="java.lang.Boolean.TRUE"/> | <util:constant id="shibboleth.c14n.simple.Lowercase" static-field="java.lang.Boolean.TRUE"/> |
... | ... |
| </file> |
| |
| === ab IdP 4.1.0 === |
| <file properties ./conf/c14n/subject-c14n.properties> |
| idp.c14n.simple.lowercase = true |
| </file> |
| |
| ===== Data Connector ===== |
| Stellen Sie sicher, dass Ihre ''./conf/attribute-resolver.xml'' unten bei den Data Connectors einen Abschnitt für die Datenbank enthält. Er kann dann als ''InputDataConnector'' in Attribut-Definitionen verwendet werden, in denen die persistentId verwendet werden soll (z.B. für die [[de:common_attributes#a17|samlPairwiseID]] (Wert der persistentId + Scope)). |
| |
| <file xml ./conf/attribute-resolver.xml> |
| <DataConnector id="StoredId" |
| xsi:type="StoredId" |
| generatedAttributeID="persistentId" |
| salt="%{idp.persistentId.salt}"> |
| <InputAttributeDefinition ref="%{idp.persistentId.sourceAttribute}" /> |
| <BeanManagedConnection>shibboleth.MySQLDataSource</BeanManagedConnection> |
| </DataConnector> |
</file> | </file> |
| |
===== 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: | 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> |
| |
| Dann modifizieren Sie die Datei wie folgt: |
| |
<file xml ./conf/intercept/consent-intercept-config.xml> | <file xml ./conf/intercept/consent-intercept-config.xml> |
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. | 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 soll, so finden sich [[:de:shibidp3pidspecials|hier einige Beispiele]]. | Falls die persistentId nur an ausgewählte SPs übertragen werden soll, so finden sich [[de:shibidp:config-pidspecials|hier einige Beispiele]]. |
| |
**Weiter geht es mit [[:de:shibidp:config-slo|Single Logout]]. ** | |
| |
| {{tag>idp4 tutorial persistentid storage datenbank session included-in-ansible}} |