...
Code Block | ||
---|---|---|
| ||
<bean id="shibboleth.DefaultRelyingParty" parent="RelyingParty"> <property name="profileConfigurations"> <list> <!-- SAML 1.1 and SAML 2.0 AttributeQuery are disabled by default. --> <!-- <bean parent="Shibboleth.SSO" p:postAuthenticationFlows="attribute-release" /> <ref bean="SAML1.AttributeQuery" /> <ref bean="SAML1.ArtifactResolution" /> --> <bean parent="SAML2.SSO" p:postAuthenticationFlows="attribute-release" /> <ref bean="SAML2.ECP" /> <ref bean="SAML2.Logout" /> <!-- <ref bean="SAML2.AttributeQuery" /> --> <ref bean="SAML2.ArtifactResolution" /> </list> </property> </bean> |
Localtabgroup | ||
---|---|---|
| ||
Localtab live | ||
active | true | |
Expand | ||
| ||
To allow users to select the attributes they wish to be released, provided the attributes are not being released via a back-channel exchange, you can set the idp.consent.allowPerAttribute property in conf/idp.properties. localtab-live |
Expand | ||
---|---|---|
| ||
When a user rejects consent to attribute release, an |
Expand | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||
LocalizationThe names and values of attributes displayed during consent may be customized. By default, the locale-aware attribute display name and display value are displayed. Customizing the localization information is generally handled through the rules defined in the AttributeRegistryConfiguration. Selective DisplayBy default, users are prompted to consent to release all attributes unless specifically suppressed on a per-attribute basis. Suppressed attributes are released to relying parties but are not displayed to users. A prompted list, ignored list, and match expressions determine whether consent should be obtained for an attribute based on the attribute ID. To prevent an attribute from being displayed, add the attribute ID to the ignored list or exclude it by a match expression. The ignored list and match expression override the prompted list.
OrderAttributes are, by default, displayed in the natural order of their IDs. Deployers may wish to customize the order in which attributes are displayed to users, in order to present the most relevant or personal attributes first. The order in which attributes are displayed to users may be customized by providing a list of attribute IDs. Attributes not in the list will still be sorted in their natural order, but subsequent to attributes in the list. Define the bean named shibboleth.consent.attribute-release.AttributeDisplayOrder in conf/intercept/consent-intercept-config.xml representing the desired order. The values of the list are attribute IDs. The following example displays the
For advanced customization of the attribute display order, a custom Comparator may be provided. Define a bean named shibboleth.consent.attribute-release.AttributeIDComparator in conf/intercept/consent-intercept-config.xml which implements Comparator<String>. For example:
|
Expand | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Users may choose from three options when deciding the duration of their consent to attribute release. The duration options and descriptive text may be customized via messages/messages.properties.
|
Expand | ||||
---|---|---|---|---|
| Comparisom
| |||
By default, users are prompted to consent to attribute release if a "new" attribute is released or if an "old" attribute is no longer released. "New" and "old" in this context indicate whether consent has already been given to an attribute ID regardless of the attribute's values. In other words, by default, users are not prompted to consent to attribute release if an attribute's values change. To prompt users to consent to attribute release if the values of an attribute have changed, set idp.consent.compareValues to true in conf/idp.properties Prompting users to consent to attribute release if an attribute's value changes requires additional storage capability, because the hash of an attribute's values must be stored for comparison. If client-side storage without use of HTML Local Storage is used to store consent, comparing attribute values may reduce the number of records that may be stored. Since a consent record is stored for every Service Provider, this may increase how often users are prompted to consent to attribute release |
...
See StorageConfiguration for more on the configuration of various approaches to storage.
Localtabgroup | ||
---|---|---|
| ||
Localtab live | ||
Expand | ||
| ||
While the default client-side storage solution is HTML Local Storage, it is possible to use cookies. Because cookies provide limited storage capability, the number of stored consent records is also very limited. By default, for client-side storage via cookies, the maximum number of stored consent records is 10. Depending on the number of attributes released and whether released attribute values are compared, the default limit of 10 may be increased. It is not clear what a reasonable default value should be, but it may be significantly higher. We were conservative with the default. If server-side storage is used, the number of stored consent records should probably be unlimited, represented by a limit of -1 or 0. The maximum number of stored consent records is configured via the idp.consent.maxStoredRecords property in conf/idp.properties localtab-live |
Expand | ||
---|---|---|
| ||
A map is supported to store numbers which refer to attribute IDs in order to reduce the size of consent storage records if desired. The default mapping of attribute IDs to numbers is defined by the shibboleth.consent.DefaultAttributeSymbolics bean, internally to the system. Additional mappings may be added to the shibboleth.consent.AttributeSymbolics bean in conf/intercept/consent-intercept-config.xml localtab-live |
Expand | ||
---|---|---|
| ||
The default lifetime for consent storage records is 1 year, and may be configured via idp.consent.storageRecordLifetime in conf/idp.properties. When consent storage records expire, they will no longer by visible via the storage service. Actual timing of deletion is specific to the storage implementation. localtab-live |
Expand | ||||
---|---|---|---|---|
| ||||
Consent storage records consist of a key and value, like all StorageRecords. The (default) storage key for consent records is a concatenation of the user key and the relying party ID, though this is customizeable. The storage value for consent records is the JSON-serialized form of a Map of Consent objects. A per-user index is maintained in order to expire or limit the number of stored records.
|
...
The following example activates the attribute release flow if an attribute is present by combining the default activation condition with a custom condition:
Localtabgroup | ||||
---|---|---|---|---|
Expand | ||||
| ||||
Example activation condition in conf/intercept/profile-intercept.xml
Localtab live | | active | true
Expand | |||||
---|---|---|---|---|---|
| |||||
To combine your own condition with the system default, you would define your bean in, e.g., conf/global.xml: Custom condition bean in global.xml
Then define the property idp.consent.attribute-release.activationCondition to example.AttributeReleaseCondition (your custom bean's ID) to install it and it will be combined with the system's default condition for you. |
Reference
Localtabgroupexpand | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Localtab live |
| ||||||||||||||||||||||||||
Beans defined, or expected to be defined, in conf/intercept/consent-intercept-config.xml :
Localtab live | | ||||||||||||||||||||||||||
active | true |
Expand | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Relevant properties defined in conf/idp.properties :
|
Expand | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||
Relevant messages overridable via messages/messages.properties:
|
V3 Compatibility
An IdP can be upgraded to the current version without any changes, but there are issues around the sorting and hashing of attribute values that may cause unexpected re-prompting for consent even when the actual values of an attribute haven't changed.
...