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:shibidp3consent_dsgvo [2019/04/17 17:00]
Wolfgang Pempe
de:shibidp3consent_dsgvo [2020/05/14 18:52] (aktuell)
Wolfgang Pempe
Zeile 1: Zeile 1:
 ====== Beispiel für eine EU-DSGVO-konforme Konfiguration des User Consent Moduls ====== ====== Beispiel für eine EU-DSGVO-konforme Konfiguration des User Consent Moduls ======
 +<callout color="#​ff9900"​ title="​Vorsicht beim Upgrade von Shib IdP 3.4.x auf Version 4.x">​ 
 +Bei Shib IdP Version 4 haben sich Details an den Standard-Flows geändert. Wir empfehlen daher, nach dem Upgrade auf Version 4.x die unten beschriebenen Flows unter ./​flows/​intercept neu anzulegen und die entsprechenden Anpassungen vorzunehmen. 
 +</​callout>​
 Die im folgenden dokumentierte Beispielkonfiguration beruht sowohl auf den Vorschlägen der Forschungsstelle Recht im DFN, [[https://​www.dfn.de/​fileadmin/​3Beratung/​Betriebstagungen/​bt69/​BT69_AAI_DS-AAI-Verfahren_Strobel_Moerike.pdf|"​Datenschutzrechtliche Analyse das AAI-Verfahrens",​ 69. BT]] als auch auf hausinternen Konsultationen mit dem Justiziariat des DFN-Vereins. ​ Die im folgenden dokumentierte Beispielkonfiguration beruht sowohl auf den Vorschlägen der Forschungsstelle Recht im DFN, [[https://​www.dfn.de/​fileadmin/​3Beratung/​Betriebstagungen/​bt69/​BT69_AAI_DS-AAI-Verfahren_Strobel_Moerike.pdf|"​Datenschutzrechtliche Analyse das AAI-Verfahrens",​ 69. BT]] als auch auf hausinternen Konsultationen mit dem Justiziariat des DFN-Vereins. ​
  
Zeile 58: Zeile 60:
 **2. In den kopierten Dateien die Pfade anpassen:** **2. In den kopierten Dateien die Pfade anpassen:**
  
-In den *-bean.xml Dateien die relativen Pfadangaben anpassen:+In den *-bean.xml Dateien die relativen Pfadangaben anpassen ​(nur Shib IdP 3.x):
    < ​    <​import resource="​../​../​conf/​audit-system.xml"​ />    < ​    <​import resource="​../​../​conf/​audit-system.xml"​ />
    ---    ---
Zeile 146: Zeile 148:
  
 ==== Attribute Query und User Consent ==== ==== Attribute Query und User Consent ====
-Ab Shibboleth IdP 3.4.3 kann bei Attribute Queries die jeweils letzte ​Endscheidung ​des Users zur Attributfreigabe berücksichtigt werden. Dies funktioniert natürlich nur, wenn die (virtuellen) Entscheidungen zur Attributfreigabe in einer IdP-seitigen Datenbank abgelegt werden und eine entsprechende Condition gesetzt ist. Siehe hierzu unter [[de:​shibidp3storage#​user_consent_zu_attributfreigabe_bei_attribute_queries_beruecksichtigen|Server-Side-Storage - User Consent]].+Ab Shibboleth IdP 3.4.3 kann bei Attribute Queries die jeweils letzte ​Entscheidung ​des Users zur Attributfreigabe berücksichtigt werden. Dies funktioniert natürlich nur, wenn die (virtuellen) Entscheidungen zur Attributfreigabe in einer IdP-seitigen Datenbank abgelegt werden und eine entsprechende Condition gesetzt ist. Siehe hierzu unter [[de:​shibidp3storage#​user_consent_zu_attributfreigabe_bei_attribute_queries_beruecksichtigen|Server-Side-Storage - User Consent]].
  
 Damit Attribute Queries unter diesen Rahmenbedingungen auch im oben skizzierten Setup funktionieren,​ sind weitere Konfigurationsschritte erforderlich:​ Damit Attribute Queries unter diesen Rahmenbedingungen auch im oben skizzierten Setup funktionieren,​ sind weitere Konfigurationsschritte erforderlich:​
  
-Zunächst die Dateien ​+Zunächst die Dateien ​\\
 ''​./​system/​flows/​intercept/​attribute-release-query-beans.xml''​ und \\ ''​./​system/​flows/​intercept/​attribute-release-query-beans.xml''​ und \\
 ''​./​system/​flows/​intercept/​attribute-release-query-flow.xm''​ \\ ''​./​system/​flows/​intercept/​attribute-release-query-flow.xm''​ \\
Zeile 157: Zeile 159:
 kopieren. kopieren.
  
-Anschließend müssen ​folgende ​Anpassungen vorgenommen werden:+Anschließend müssen ​diverse ​Anpassungen vorgenommen werden: 
 + 
 +**Shib IdP 3.x:**  
 +<file xml ./​flows/​intercept/​attribute-release-query/​attribute-release-query-beans.xml>​ 
 +    <!-- Use '​intercept/​attribute-release'​ as storage context. --> 
 + 
 +    <bean id="​AttributeReleaseStorageContextLookupStrategy"​ class="​com.google.common.base.Functions"​ 
 +        factory-method="​constant"​ c:​_0="​intercept/​attribute-release"​ /> 
 + 
 +    <bean id="​ReadAttributeReleaseConsentFromStorage"​ 
 +        class="​net.shibboleth.idp.consent.flow.storage.impl.ReadConsentFromStorage"​ scope="​prototype"​ 
 +        p:​storageKeyLookupStrategy-ref="​shibboleth.consent.UserAndRelyingPartyStorageKey"​ 
 +        p:​storageSerializer-ref="​shibboleth.consent.ConsentSerializer"​ 
 +        p:​storageContextLookupStrategy-ref="​AttributeReleaseStorageContextLookupStrategy"​ /> 
 +  
 +    <!-- Use '​intercept/​attribute-info'​ as storage context. --> 
 +    <bean id="​AttributeReleaseInfoStorageContextLookupStrategy"​ class="​com.google.common.base.Functions"​ 
 +        factory-method="​constant"​ c:​_0="​intercept/​attribute-info"​ /> 
 + 
 +    <bean id="​ReadAttributeReleaseInfoConsentFromStorage"​ 
 +        class="​net.shibboleth.idp.consent.flow.storage.impl.ReadConsentFromStorage"​ scope="​prototype"​ 
 +        p:​storageKeyLookupStrategy-ref="​shibboleth.consent.UserAndRelyingPartyStorageKey"​ 
 +        p:​storageSerializer-ref="​shibboleth.consent.ConsentSerializer"​ 
 +        p:​storageContextLookupStrategy-ref="​AttributeReleaseInfoStorageContextLookupStrategy"​ /> 
 + 
 +    <!-- Use '​intercept/​attribute-must'​ as storage context. --> 
 +    <bean id="​AttributeReleaseMustStorageContextLookupStrategy"​ class="​com.google.common.base.Functions"​ 
 +        factory-method="​constant"​ c:​_0="​intercept/​attribute-must"​ /> 
 + 
 +    <bean id="​ReadAttributeReleaseMustConsentFromStorage"​ 
 +        class="​net.shibboleth.idp.consent.flow.storage.impl.ReadConsentFromStorage"​ scope="​prototype"​ 
 +        p:​storageKeyLookupStrategy-ref="​shibboleth.consent.UserAndRelyingPartyStorageKey"​ 
 +        p:​storageSerializer-ref="​shibboleth.consent.ConsentSerializer"​ 
 +        p:​storageContextLookupStrategy-ref="​AttributeReleaseMustStorageContextLookupStrategy"​ /> 
 + 
 +</​file>​ 
 + 
 +**Shib IdP 4.x:**  
 +<file xml ./​flows/​intercept/​attribute-release-query/​attribute-release-query-beans.xml>​ 
 +    <!-- Use '​intercept/​attribute-release'​ as storage context. --> 
 + 
 +    <bean id="​AttributeReleaseStorageContextLookupStrategy"​ parent="​shibboleth.Functions.Constant"​ 
 +        c:​target="​intercept/​attribute-release"​ /> 
 + 
 +    <bean id="​ReadAttributeReleaseConsentFromStorage"​ 
 +        class="​net.shibboleth.idp.consent.flow.storage.impl.ReadConsentFromStorage"​ scope="​prototype"​ 
 +        p:​storageKeyLookupStrategy-ref="​shibboleth.consent.UserAndRelyingPartyStorageKey"​ 
 +        p:​storageSerializer-ref="​shibboleth.consent.ConsentSerializer"​ 
 +        p:​storageContextLookupStrategy-ref="​AttributeReleaseStorageContextLookupStrategy"​ /> 
 + 
 +    <!-- Use '​intercept/​attribute-info'​ as storage context. --> 
 + 
 +    <bean id="​AttributeReleaseInfoStorageContextLookupStrategy"​ parent="​shibboleth.Functions.Constant"​ 
 +        c:​target="​intercept/​attribute-info"​ /> 
 + 
 +    <bean id="​ReadAttributeReleaseInfoConsentFromStorage"​ 
 +        class="​net.shibboleth.idp.consent.flow.storage.impl.ReadConsentFromStorage"​ scope="​prototype"​ 
 +        p:​storageKeyLookupStrategy-ref="​shibboleth.consent.UserAndRelyingPartyStorageKey"​ 
 +        p:​storageSerializer-ref="​shibboleth.consent.ConsentSerializer"​ 
 +        p:​storageContextLookupStrategy-ref="​AttributeReleaseInfoStorageContextLookupStrategy"​ /> 
 + 
 +    <!-- Use '​intercept/​attribute-must'​ as storage context. --> 
 + 
 +    <bean id="​AttributeReleaseMustStorageContextLookupStrategy"​ parent="​shibboleth.Functions.Constant"​ 
 +        c:​target="​intercept/​attribute-must"​ /> 
 + 
 +    <bean id="​ReadAttributeReleaseMustConsentFromStorage"​ 
 +        class="​net.shibboleth.idp.consent.flow.storage.impl.ReadConsentFromStorage"​ scope="​prototype"​ 
 +        p:​storageKeyLookupStrategy-ref="​shibboleth.consent.UserAndRelyingPartyStorageKey"​ 
 +        p:​storageSerializer-ref="​shibboleth.consent.ConsentSerializer"​ 
 +        p:​storageContextLookupStrategy-ref="​AttributeReleaseMustStorageContextLookupStrategy"​ /> 
 +</​file>​ 
 + 
 +In der Flow-Definition den Block nach ''<​!-- Read consent from storage -->''​ anpassen und erweitern:​ 
 + 
 +**Shib IdP 3.x und 4.x:** 
 +<file xml ./​flows/​intercept/​attribute-release-query/​attribute-release-query-flow.xml>​ 
 +    <!-- Read consent from storage. --> 
 + 
 +    <​action-state id="​ReadConsentFromStorage">​ 
 +        <​evaluate expression="​ReadAttributeReleaseConsentFromStorage"​ /> 
 +        <​evaluate expression="'​proceed'"​ /> 
 + 
 +        <​transition on="​proceed"​ to="​ReadInfoConsentFromStorage"​ /> 
 +    </​action-state>​ 
 + 
 +    <​action-state id="​ReadInfoConsentFromStorage">​ 
 +        <​evaluate expression="​ReadAttributeReleaseInfoConsentFromStorage"​ /> 
 +        <​evaluate expression="'​proceed'"​ /> 
 + 
 +        <​transition on="​proceed"​ to="​ReadMustConsentFromStorage"​ /> 
 +    </​action-state>​ 
 + 
 +    <​action-state id="​ReadMustConsentFromStorage">​ 
 +        <​evaluate expression="​ReadAttributeReleaseMustConsentFromStorage"​ /> 
 +        <​evaluate expression="'​proceed'"​ /> 
 + 
 +        <​transition on="​proceed"​ to="​TestForReadGlobalAttributeConsentFromStorage"​ /> 
 +    </​action-state>​ 
 + 
 +    <​decision-state id="​TestForReadGlobalAttributeConsentFromStorage">​ 
 +        <if test="​attributeReleaseFlowDescriptor.globalConsentAllowed"​ 
 +            then="​ReadGlobalAttributeConsentFromStorage"​ else="​CheckPreviousConsents"​ /> 
 +    </​decision-state>​ 
 + 
 +    <​action-state id="​ReadGlobalAttributeConsentFromStorage">​ 
 +        <​evaluate expression="​ReadAttributeReleaseGlobalConsentFromStorage"​ /> 
 +        <​evaluate expression="'​proceed'"​ /> 
 + 
 +        <​transition on="​proceed"​ to="​TestForGlobalAttributeConsent"​ /> 
 +    </​action-state>​  
 +     
 +    <!-- hier noch der angepasste Pfad fürs Import-Statement der Attribute Release Bohne --> 
 +    <​bean-import resource="​../​../​../​system/​flows/​intercept/​attribute-release-beans.xml"​ /> 
 +</​file>​ 
 + 
 +Anschließend noch den flow in ''​./​conf/​intercept/​profile-intercept.xml''​ bekannt machen: 
 +<file xml ./​conf/​intercept/​profile-intercept.xml>​ 
 +    <bean id="​shibboleth.AvailableInterceptFlows"​ parent="​shibboleth.DefaultInterceptFlows"​ lazy-init="​true">​ 
 +        <​property name="​sourceList">​ 
 +            <list merge="​true">​ 
 +               <​!-- ... --> 
 +               <​bean id="​intercept/​attribute-release-query"​ parent="​shibboleth.consent.AttributeReleaseFlow"​ /> 
 +               <​!-- ... --> 
 +            </​list>​ 
 +        </​property>​ 
 +   </​bean>​ 
 +</​file>​
  
 +{{tag>​idp3 idp4}}
  • Zuletzt geändert: vor 16 Monaten