Dies ist eine alte Version des Dokuments!


Per Attribute Consent für vom SP nicht 'required' Attribute

In den allgemeinen Properties des IdP kann man einen 'per Attrbute Consent' einstellen. D.h. der Nutzer kann für jedes Attribut über eine Checkbox entscheiden, ob der Wert an den SP übertragen wird oder nicht. Das macht im Sinne des Prozesses aber nur Sinn, für die Attribute, die vom SP nicht explizit über die Metadaten (mit dem Tag required=„True“ versehen) angefordert werden.

Um das auf der Attribute-Release Seite zu berücksichtigen sind folgende zwei kleine Anpassungen vorzunehmen:

1. Eine schon vorhandene IdP-Class in das Velocity Template propagieren. Dazu ist die Datei system/flows/intercept/attribute_release_flow.xml wie folgt zu ergänzen:

system/flows/intercept/attribute-release_flow.xml
...
111 <!-- Display attribute release page. -->
112 
113 <view-state id="DisplayAttributeReleasePage" view="#{flowRequestContext.activeFlow.id}">
114   <on-render>
115     <evaluate expression="environment" result="viewScope.environment" />
116     <evaluate expression="T(net.shibboleth.utilities.java.support.codec.HTMLEncoder)" result="viewScope.encoder" />
117     <evaluate expression="flowRequestContext.getExternalContext().getNativeRequest()" result="viewScope.request" />
118     <evaluate expression="flowRequestContext.getExternalContext().getNativeResponse()" result="viewScope.response" />
119     <evaluate expression="opensamlProfileRequestContext" result="viewScope.profileRequestContext" />
120     <evaluate expression="new net.shibboleth.idp.consent.logic.impl.AttributeDisplayNameFunction(flowRequestContext.getExternalContext().getNativeRequest(), FallbackLanguages)" 
121               result="viewScope.attributeDisplayNameFunction" />
122     <evaluate expression="new net.shibboleth.idp.consent.logic.impl.AttributeDisplayDescriptionFunction(flowRequestContext.getExternalContext().getNativeRequest(), FallbackLanguages)" 
123               result="viewScope.attributeDisplayDescriptionFunction" />
124     <!-- Get RequiredPredicate object as $attributeRequired in velocity template -->
125     <evaluate expression="new net.shibboleth.idp.consent.logic.impl.IsAttributeRequiredPredicate(flowRequestContext.getExternalContext().getNativeRequest())" 
126               result="viewScope.attributeRequired" />
...

2. Im Velocity Template die Checkbox nur für non required Attribute anzeigen. Dazu die Datei views/intercept/attribute-release.vm anpassen:

views/intercept/attribute-release.vm
 
  • Zuletzt geändert: vor 7 Jahren