Introduction
An Identity Provider (IdP) is responsible for authenticating users and issuing identification information by using security tokens like SAML 2.0, OpenID Connect, OAuth 2.0 and WS-Trust. This is a favourable alternative to explicitly authenticating a user within a security realm.
The responsibility of the identity provider configuration is to represent external identity providers. These external identity providers can be Facebook, Yahoo, Google, Salesforce, Microsoft Windows Live, etc. If you want to authenticate users against these identity providers, then you must associate one or more federated authenticators with the WSO2 Identity Server. These identity providers support for different authentication protocols. For example, if you want to authenticate users against Salesforce, then you must associate the SAML 2.0 authenticator with the Salesforce identity provider, if you want to authenticate users against Yahoo, then you must associate the OpenID Connect authenticator with it. To make this process much easier, the Identity Server also comes with a set of more specific federated authenticators. For example, if you want to authenticate against Facebook, you do not need to configure OAuth 2.0 authenticator. Instead, you can directly use the Facebook federated authenticator.
Each identity provider configuration can also maintain a claim mapping. This is to map the identity provider's own set of claims to the Identity Server's claims. When the response from an external identity provider is received by the response processor component of the federated authenticator, before it hands over the control to the authentication framework, the response processor will create a name/value pair of user claims received in the response from the identity provider. These claims are specific to the external identity provider. Then it is the responsibility of the authentication framework to read the claim mapping configuration from the identity provider component and do the conversion. So, while inside the framework, all the user claim values will be in a common format.
So, in short, the WSO2 Identity Server allows you to add identity providers and specify various details that help you to link the identity provider to the Identity Server. So you must specify all information required to send the authentication requests and get a response back from the identity provider. This topic contains the following sections.
Adding an identity provider
Follow the instructions below to add a new identity provider.
- Sign in. Enter your username and password to log on to the Management Console.
- Navigate to the Main menu to access the Identity menu. Click Add under Identity Providers.
Fill in the details in the Basic Information section.
Note the following when filling the above form.
Field | Description | Sample Value |
---|
Identity Provider Name | The Identity Provider Name must be unique as it is used as the primary identifier of the identity provider. | FacebookIdP |
Display Name | The Display Name is used to identify the identity provider. If this is left blank, the Identity Provider Name is used. This is used in the login page when selecting the identity provider that you wish to use to log in to the service provider. | Facebook |
Description | The Description is added in the list of identity providers to provide more information on what the identity provider is. This is particularly useful in situations where there are many identity providers configured and a description is required to differentiate and identify them. | This is the identity provider configuration for Facebook. |
Federation Hub Identity Provider | Select the Federation Hub Identity Provider check-box to indicate if this points to an identity provider that acts as a federation hub. A federation hub is an identity provider that has multiple identity providers configured to it and can redirect users to the correct identity provider depending on their Home Realm identifier or their Identity Provider Name. When we have this check-box selected additional window will pop-up in the multi-option page in the first identity server to get the home realm identifier for the desired identity provider in the identity provider hub. | Selected |
Home Realm Identifier | The Home Realm Identifier value can be specified in each federated IDP and can send the Home Realm Identifier value as the “fidp” query parameter (e.g., fidp=googleIdp) in the authentication request by the service provider. Then WSO2 Identity Server finds the IDP related to the “fidp” value and redirects the end user to the IDP directly rather than showing the SSO login page. By using this, you can avoid multi-option, in a multi-option scenario without redirecting to the multi-option page. | FB |
Identity Provider Public Certificate | The Identity Provider Public Certificate is the public certificate belonging to the identity provider. Uploading this is necessary to authenticate the response from the identity provider. See Using Asymmetric Encryption in the WSO2 Product Administration Guide for more information on how public keys work and how to sign these keys by a certification authority. | This can be any certificate. If the identity provider is another Identity Server, this can be a wso2.crt file. |
Alias | The Alias is a value that has an equivalent value specified in the identity provider that we are configuring. This is required for authentication in some scenarios. | http://localhost:9443/oauth2/token |
Click here for more information on the federation hub and the home realm identifier
Click here for more information on the Alias
- Enter the Identity Provider Name and provide a brief Description of the identity provider. Only Identity Provider Name is a required field.
Fill in the remaining details where applicable. Click the arrow buttons to expand the forms available to update.
Click here for details on how to configure claims
Configuring claims for an identity provider involves mapping the claims available in the identity provider to claims that are local to the WSO2 Identity Server. This is done so that the Identity Server can identify the user attributes in the response sent from the identity provider. As an example, Facebook IdP will return authenticated user email as 'email' and identity server will map it to the 'http://wso2.org/claims/emailaddress' using the IdP claim mapping. See the Identity Server Architecture topic for more information on how claim mapping fits into the identity provider scenario.
In the Claim Configuration form, there are two sub forms.
- Basic claim configuration - This involves a straightforward mapping of the claim that is used on the identity provider side with the claims local to the Identity Server.
- Advanced claim configuration - This involves more advanced mapping, where the mapped claims can have specific default values.
Let's get started!
To view the claim configuration section, expand the Claim Configuration form.
Configuring basic claims
Select the claim mapping dialect by either choosing to use a local claim dialect (i.e., a claim dialect local to the Identity Server) or define your own custom claim dialect (i.e., a claim dialect which exists in the identity provider that must be mapped to the Identity Server).
Configuring advanced claims
You can make advanced claim configurations based on the basic configurations you have made.
Click here for more information on when advanced claims are useful
Use the following instructions to configure advanced claims.
- If you chose to Use Local Claim Dialect in the Basic Claim Configuration, do the following.
- When you send provisioning requests from the Identity Server to the external identity provider, it may not be necessary to send all the requests. So, you can use the Provisioning Claim Filter to filter out the user attributes you need to send from the other available attributes. To use the Provisioning Claim Filter, select the claims that exist in the Identity Server from the dropdown list and click Add Claim. Clicking this button again enables you to add a new entry.
- Enter a Default Value for your claim. This value is the default value used when provisioning this claim. This value will be used in all instances of this field, e.g., if all users are from one organization, you can specify the name of the organization as a default value using this field. Clicking the Delete button will remove this advanced claim.
- If you chose to Define Custom Claim Dialect in the Basic Claim Configuration, do the following.
- Select the Identity Provider Claim URI you defined from the dropdown list and click Add Claim. Clicking this button again will add a new entry.
- Enter a Default Value for your claim. This value is the default value used when provisioning this claim. This value will be used in all instances of this field, e.g., if all users are from one organization, you can specify the name of the organization as a default value using this field. Clicking the Delete button will remove this advanced claim.
Once you create a claim definition, you need to map that newly added claim to an OpenID Connect (OIDC) claim. To do this, do the following:
- Select Home -> Identity -> Claims -> List -> http://wso2.org/oidc/claim
- In the list select a claim that you do not use and map that to the newly added claim.
See the following topics for samples of claim mapping for an identity provider.
Click here for details on how to configure roles
This section provides instructions on how to configure roles for an identity provider. Role mapping needs to be done because roles in the Identity Server are different to the roles available in the identity provider that you are configuring. For example, if you are configuring Google Apps as an identity provider in the Identity Server, the admin role in the Identity Server needs to be mapped to an appropriate role in Google Apps so that the user will have the same role in Google Apps and the Identity Server.
You can configure the roles of the identity provider by doing the following.
- Expand the Role Configuration section.
- To configure Identity Provider Roles, click Add Role Mapping. The following screen appears.
- Enter the Identity Provider Role and map it to the Local Role available in the Identity Server. See here for information on how the local role can be created in the Identity Server. Click the Delete button to remove the mapping.
- Enter the Identity Provider Provisioning Role. This configuration is very useful if you wish to only provision some users and not others. All users who are assigned to this role will be provisioned from the Identity Server to the identity provider. You can provision users that have multiple roles by specifying the roles in a comma-separated list.
Click here for details on how to configure federated authenticators
This topic includes information on how to configure federated authenticators in WSO2 Identity Server.
You can configure the following federated authenticators by expanding the Federated Authenticators section followed by the required subsections.
Click here for details on how to configure just-in-time provisioning
Just-in-time provisioning is about how to provision users to the Identity Server at the time of federated authentication. A service provider initiates the authentication request, the user gets redirected to the Identity Server, and then the Identity Server redirects the user to an external identity provider for authentication. Just-in-time provisioning gets triggered in such a scenario when the Identity Server receives a positive authentication response from the external identity provider. The Identity Server will provision the user to its internal user store with the user claims from the authentication response.
You configure JIT provisioning against an identity provider–not against service providers. Whenever you associate an identity provider with a service provider for outbound authentication, if the JIT provisioning is enabled for that particular identity provider, then the users from the external identity provider will be provisioned into the Identity Server's internal user store. In the JIT provisioning configuration, you can also pick the provisioning user store.
JIT provisioning happens in the middle of an authentication flow. You can create users on the fly, without having to create user accounts in advance. For example, if you recently added a user to your application, you do not need to manually create the user in the Identity Server or in the underlying user store.
Expand the Just-In-Time Provisioning section to configure this.
- Selecting No provisioning from the available options disables Just-In-Time provisioning. This is selected by default.
- Alternatively you could choose to always provision users to the user store domain. Select the user store domain name from the dropdown list to provision users to the user store. The default user store that is shipped with the Identity Server is the user store available by default. You can configure a user store of your preference and it will be listed in this dropdown for selection.
To read up about the JIT provisioning architecture, see Provisioning Architecture.
Click here for details on how to configure outbound provisioning connectors
You can configure the WSO2 Identity Server to provision users to external applications. See the Identity Server Architecture for more information on how this process fits into the overall picture
You can configure outbound provisioning connectors by expanding the relevant section.
In addition to this, you can also create custom connectors that are added to the list of outbound provisioning connectors once created.
Configuring Google provisioning
This configuration involves setting up the Identity Server to send provisioning requests to Google applications.
Expand the Google Provisioning Configuration form and fill in the following fields where relevant.
Field | Description | Sample value |
---|
Enable Connector | Selecting this enables identity provisioning through the Google domain. | Selected |
Google Domain | The name of the Google domain used to provision users. | mygoogledomain.com |
Primary Email | Claim URI which will be used to retrieve primary email address for the account to be created. This must be a claim that is available and local in the Identity Server. |
http://wso2.org/claims/emailaddress
|
Given Name | Claim URI which will be used to retrieve given name attribute for the user. This must be a claim that is available and local in the Identity Server. |
http://wso2.org/claims/givenname
|
Family Name | Claim URI which will be used to retrieve family name attribute for the user. This must be a claim that is available and local in the Identity Server. |
http://wso2.org/claims/lastname
|
Service Account Email | This email is used for authentication purposes. | d343s86gf@developer.gserviceaccount.com |
Private Key | Browse and attach the private key from your local machine. This is the PKCS12 private key generated at the service account creation | <uploaded_file> |
Administrator's Email | This is the email of the administrator who owns the service account in the Google Domain specified. Provisioning takes place using this email, so specifying this here serves as a means for authentication. | om@mygoogledomain.com |
Application Name | This is the name of the application which is used to represent the Google connector. | Domain |
Google Outbound Provisioning pattern | This pattern is used to build the user id of Google domain. Combination of attributes UD (User Domain), UN (Username), TD (Tenant Domain) and IDP (Identity Provider) can be used to construct a valid pattern. This is a way to differentiate following scenarios: If there are several tenants and you must configure Google outbound provisioning for same Google domain in those tenants. If there are several user stores and you must configure the specific user store that needs to be provisioned. If there are multiple identity providers configured for same Google domain. | {UD, UN, TD, IDP} |
Google Provisioning Separator | This is used to separate the values that you configure in the Google Outbound Provisioning pattern. | For this, it is better to use a character that is not normally used in the user domain/username/tenant domain/idp name. For example: "_" |
Configuring Salesforce provisioning
This configuration involves setting up the Identity Server to send provisioning requests to Salesforce. See Outbound Provisioning with Salesforce for more information on how this is configured from end to end.
- Expand the Salesforce Provisioning Configuration form.
Fill in the following fields where relevant.
Field | Description | Sample value |
---|
Enable Connector | Selecting this enables identity provisioning through Salesforce. | Selected |
API version | This is the version of the Salesforce API that is used for provisioning. To obtain this, log into https://developer.salesforce.com/ and clickSetup. On the left navigation pane, click API under Develop. Generate one of those APIs to check the version. | v32.0 |
Domain Name | This is the name of the Salesforce domain used to provision users. If you do not have a Salesforce domain, you can create a domain by logging into https://developer.salesforce.com/ and clicking Setup. On the left navigation pane, click My Domain under Domain Management. Make sure you enter the domain with an HTTPS prefix so that it resembles a URL. | https://identityprovisioning-dev-ed.my.salesforce.com/ |
Client ID | This is the username of the client you are using to access Salesforce. This Consumer Key value is obtained when configuring Salesforce. See Outbound Provisioning with Salesforce for more information. | 3MVG8123wefw763na2452683KJNsvrgKBwe4gyksKJ22f3g45 |
Client Secret | This is the password of the client you are using to access Salesforce. This Consumer Secret value is obtained when configuring Salesforce. See Outbound Provisioning with Salesforce for more information. | <password> |
Username | This is the Salesforce username. | samuel@wso2.com |
Password | This is the Salesforce password and must be entered along with the security token. So you would enter this in the following format: <password><security_token> | <password><security_token> |
OAuth2 Token Endpoint | OAuth token endpoint URL of Salesforce. | https://login.salesforce.com/services/oauth2/token |
Provisioning Pattern | This pattern is used to build the user id of Salesforce domain. Combination of attributes UD (User Domain), UN (Username), TD (Tenant Domain) and IDP (Identity Provider) can be used to construct a valid pattern. This is a way to differentiate following scenarios: If there are several tenants and you must configure Salesforce outbound provisioning for same Salesforce domain in those tenants. If there are several user stores and you must configure the specific user store that needs to be provisioned. If there are multiple identity providers configured for same Salesforce domain. | {UD, UN, TD, IDP} |
Provisioning Separator | This is used to separate the values that you configure in the Salesforce Outbound Provisioning pattern. | For this, it is better to use a character that is not normally used in the user domain/username/tenant domain/idp name. For example: "_" |
Provisioning Domain | The user name of Salesforce is an email address. Here you can configure a specific domain name the username should have. | yahoo.com |
Configuring SCIM provisioning
The System for Cross-domain Identity Management (SCIM) specification is designed to make managing user identities in the WSO2 Identity Server easier. Identity provisioning is a key aspect of any identity management solution and, as such, is very relevant to SCIM. In simple terms, it is to create, maintain and delete user accounts and related identities in one or more systems or applications in response to business processes that are initiated either by humans directly or by automated tasks.
This configuration involves setting up the Identity Server to send provisioning requests to an external application that supports SCIM. See Outbound Provisioning with SCIM for more information on how this works in a typical scenario.
Expand the SCIM Provisioning Configuration form.
Fill in the following fields where relevant.
Field | Description | Sample value |
---|
Enable Connector | Selecting this enables identity provisioning through SCIM. | Selected |
Username | This is the username of the SCIM application. | Admin |
Password | This is the password of the SCIM application. | <password> |
User Endpoint | This is the SCIM endpoint of the users. | https://localhost:9443/wso2/scim/Users |
Group Endpoint | This is the SCIM endpoint of the groups. | https://localhost:9443/wso2/scim/Groups |
User Store Domain | This is the user store that users are created. You can specify any user store connected to your identity provider. | Domain |
Enable Password Provisioning | This is to specify whether to send a default password, or the password sent in the SCIM request, to the server where it gets provisioned. In a scenario where the Identity Server is used as a proxy, and sending the password to some other server is not appropriate, the default password can be sent. | Selected |
Default Password | The default password that must be sent. | <password> |
Configuring SPML provisioning
The Service Provisioning Markup Language (SPML) is the open standard for the integration and interoperation of service provisioning requests. The goal of SPML is to allow organizations to securely and quickly set up user interfaces for Web services and applications, by letting enterprise platforms such as Web portals, application servers, and service centers generate provisioning requests within and across organizations
This configuration involves setting up the Identity Server to send provisioning requests to an external application that supports SPML. See Outbound Provisioning with SPML for more information on how this works in a typical scenario.
- Expand the SPML Provisioning Configuration form.
Fill in the following fields where relevant.
Field | Description | Sample value |
---|
Enable Connector | Selecting this enables identity provisioning through SPML. | Selected |
Username | This is the username of the SPML application. | Configadmin |
Password | This is the password of the SPML application. | <password> |
SPML Endpoint | This is the SPML endpoint URL. | http://localhost:9847/servelet/spml |
SPML ObjectClass | The ObjectClass for SPML. This value is required as it links with the ObjectClass in SPML that is used to provide data from the user store. | spml2person |
- See Outbound Provisioning for more information on configuring user stores and service providers for outbound provisioning.
- Click Register to add the Identity Provider.
Configuring a resident identity provider
WSO2 Identity Server can mediate authentication requests between service providers and identity providers. At the same time, the Identity Server itself can act as a service provider and an identity provider. When it acts as an identity provider it is known as the resident identity provider.
The resident identity provider configuration is very relevant for you if you are a service provider and want to send an authentication request or a provisioning request to the Identity Server (say via SAML, OpenID Connect, SCIM, and WS-Trust). See Configuring WS-Trust Security Token Service for an example of how resident identity provider is used to implement security token service.
Resident identity provider configuration is a one time configuration for a given tenant. It basically shows you the Identity Server's metadata, like the endpoints. In addition to the metadata, you can configure this if you want to secure the WS-Trust endpoint with a security policy.
Follow the instructions below to configure a resident identity provider.
- Sign in. Enter your username and password to log on to the Management Console.
In the Main menu under the Identity section, click Resident under Identity Providers.
The Resident Identity Provider page appears.
Enter a Home Realm Identifier for the resident identity provider. You can enter multiple identifiers as a comma separated list.
- Configure inbound authentication if required. This is not mandatory for creating a resident identity provider.
Set the Identity Provider Entity Id under SAML2 Web SSO Configuration. Specifying this gives the tenant identification, so any users provisioned through this tenant can be identified as such.
Configure the Security Token Service (STS). You can configure this if you want to secure the WS-Trust endpoint with a security policy.
- Click Update.
- Click Ok to the confirmation message that appears.
Note the following information regarding the URLs on this screen.
You can modify the host nameoftheseURLs by changing the value in the <IS_HOME>/repository/conf/carbon.xml
file using the following configuration.
<HostName>localhost</HostName>
Once you update the host nameinthecarbon.xml file, change the URL to reflect the new hostname in the <IS_HOME>/repository/conf/identity/identity.xml
file.
<IdentityProviderURL>https://localhost:9443/samlsso</IdentityProviderURL>
The above URL is used for destination validation of the SAML request. The Identity Server compares the value of the "destination" inside the SAML request with the URL in the above configuration. This is done to ensure that the correct application is communicating with the right identity provider.
Managing identity providers
This section provides instructions on how to manage identity providers once they are created.
Viewing identity providers
Follow the instructions below to view the list of identity providers added in the WSO2 Identity Server.
- Sign in. Enter your username and password to log on to the Management Console.
- In the Main menu under the Identity section, click List under Identity Providers. The list of identity providers you added appears.
Editing identity providers
Follow the instructions below to edit an identity provider's details.
- Sign in. Enter your username and password to log on to the Management Console.
- In the Main menu under the Identity section, click List under Identity Providers. The list of identity providers you added appears.
- Locate the identity provider you want to edit and click on the corresponding Edit link.
- You are directed to the edit screen where you can modify the details you configured for the identity provider.
Deleting identity providers
Follow the instructions below to delete an identity provider.
- Sign in. Enter your username and password to log on to the Management Console.
- In the Main menu under the Identity section, click List under Identity Providers. The list of identity providers you added appears.
- Locate the identity provider you want to delete and click on the corresponding Delete link.
- Confirm your request in the WSO2 Carbon window. Click the Yes button.
Disabling/Enabling identity providers
Follow the instructions below to disable or enable an identity provider.
- Sign in. Enter your username and password to log on to the Management Console.
- In the Main menu under the Identity section, click List under Identity Providers. The list of identity providers you added appears.
- Locate the identity provider you want to delete and click on the corresponding Disable link to disable the identity provider. Clicking this link will change the link to Enable. To enable the identity provider again, click the Enable link.
- Click Ok on the confirmation form that appears when clicking Disable/Enable.
See the following topics for information on configuring service providers using different specifications.
See the following topics to configure different applications as service providers in Identity Server.