Claim mapping for a service provider involves mapping claims that are used by the service provider to the claims local to the WSO2 Identity Server. For the occasions where a service provider needs some information of the user from the Identity Server where the service provider authenticates, the claim mapping is useful. Once the user is authenticated, the service provider can use these received claim details to provide its service. See the Identity Server Architecture for more information on how claim mapping fits in to the overall scheme of things.
Claim mapping
- In the Claim Configuration form, s elect the claim mapping dialect by either choosing to use a local claim dialect or define your own custom claim dialect.
- If you choose to Use Local Claim Dialect, you need to fill in the following details.
- Fill in your requested claims by clicking the Add Claim URI button.
- Choose your Local Claim from the drop-down. Select whether this claim is a Mandatory Claim for the Service Provider using the checkbox.
- If you choose to Define Custom Claim Dialect, you need to do the following.
Add a custom claim URI by clicking on the Add Claim URI button. Clicking this button again enables you to map more claims.
Add the Service Provider Claim and choose the corresponding Local Claim from the drop-down. Select whether you want the claim to be a Requested Claim and whether this claim is a Mandatory Claim for the service provider, using the relevant checkboxes.
Information on mapping claims
The Local Claim list includes a set of standard claim values which are local to the WSO2 Identity Server. When adding a service provider, it is necessary to map the values of the claims local to the service provider with those provided in this drop-down list which are local to the Identity Server. This should be done for all values in the service provider unless they use the same claim name.
Marking a claim as a Mandatory Claim would ensure that the WSO2 IS will definitely send a value for this claim to the service provider. When a user logs into this service provider, if the identity provider does not provide a value for any of the mandatory claims, the user will be prompted to provide them at the time of login as shown in the image below.
Marking a mapped claim as a Requested Claim would ensure that the service provider definitely sends this claim to the Identity Server. This is useful particularly in cases where there are hundreds of claims and only specific ones need to be sent to the Identity Server.
Collecting consent for requested and mandatory claims
When the user is authenticated to the application, claims that are indicated as required and/or mandatory in this claim configuration form will be displayed in the consent request UI to prompt for the user’s consent. If a claim is indicated as a mandatory claim, it will be indicated with a red color asterix (*) when requesting consent. The user will not be able to proceed with authentication without providing consent for the mandatory claims.
For more information about consent management during authentication, see Consent Management with Single-Sign-On.
Select the Subject Claim URI and the Role Claim URI (for custom claims)from the drop-down. The claims you mapped are listed in the drop-down and you can choose among these claims.
- Subject Claim URI defines the authenticated user identifier which will return with the authentication response to the service provider.
- Role Claim URI defines the role claim for the service provider. This is useful if you use a different claim as the role claim or if you define a custom claim mapping for the service provider.
Caching service provider claims
If you want to cache claim data, be sure to add a cache configuration similar to the following under <CacheManager name="IdentityApplicationManagementCacheManager">
in the <IS_HOME>/repository/conf/identity/identity.xml
file:
<Cache name="LocalClaimInvalidationCache" enable="true" timeout="300" capacity="5000" isDistributed="false"/>
Here, you need to specify values as follows:
timeout
: The cache timeout value in seconds.capacity
: The maximum cache size.isDistributed
: Set this tofalse
.
- See the Logging in to Salesforce with Facebook topic for a sample of claim mapping for a service provider.