With the SAML2 relying party capabilities of Carbon, it is possible to set up Single Sign-On between different Carbon instances where Identity Server acts as the Identity Provider while other Carbon Servers act as the relying party. Following is a guide to set up SSO between different Carbon Servers.
Step 1
Installing the SAML2 relying party (SAML2 SSO Authenticator) feature in a Carbon Server
SAML2 relying party components are not shipped with the default Carbon distribution. However, these bundles are packages that can be installed as a feature, which is available in the online-hosted P2 repository. Therefore, it is possible to install this feature with minimal effort through the Carbon Feature Manager.
- Add the WSO2 online P2 repository as a new repository. Usually, the hosted P2 repository is available at this URL: http://dist.wso2.org/p2/carbon/releases/(Carbon-Release-Version). Learn how to add a repository to the Identity Server here.
- Search for the word "authenticator." Select "SAML2 SSO Authenticator" from the result and click "Install." See Installing Features.
Step 2
Configuring the Carbon Server to use the SAML2-based authentication instead of default username/password-based authentication
After installing the SAML2 relying party components (SAML2 SSO authenticator), it is necessary to configure SAML2 SSO authenticator to communicate with the Identity Server for user authentication.
This can be configured in the ($CARBON_HOME)/repository/conf/advanced/authenticators.xml
file.
This file will contain configurations for different authenticators. By default, it is shipped with a sample configuration for SAML2 SSO authenticator and requires minor modifications to prior to setup.
<Authenticator name="SAML2SSOAuthenticator"> <Priority>10</Priority> <Config> <Parameter name="LoginPage">/carbon/admin/login.jsp</Parameter> <Parameter name="ServiceProviderID">carbonServer</Parameter> <Parameter name="IdentityProviderSSOServiceURL">https://localhost:9443/samlsso</Parameter> </Config> </Authenticator>
Priority
- This is the priority level of the authenticator. In the Carbon Runtime, the authenticator with the highest priority will be picked up. This value should be greater than 5 in order to supersede the default username/password-based authenticator.Parameter LoginPage
- This is the default login page URL of Carbon. All requests coming to this page will be intercepted for authentication. It is not necessary to change this value from the value given in the sample configuration.Parameter ServiceProviderID
- This is the unique identifier for the Carbon Server in an SSO setup. This value should be used as the value of the issuer in the Identity Server configuration.Parameter IdentityProviderSSOServiceURL
- This is the Identity Server URL to which the users will be redirected for authentication. It should have this format:https://(host-name):(port)/samlsso
.
Step 3
Configuring the Identity Server as the Single Sign-On provider
Finally, you need to configure the Identity Server to act as the Single Sign-on provider. Each relying party should be registered as a service provider at the Identity Server-end. The following is a sample configuration for registering a Carbon server as a service provider.
- Specify the Issuer. This should be equal to the
ServiceProviderID
value mentioned in theauthenticators.xml
of the relying party Carbon server. - Specify the Assertion Consumer URL. This is the URL to which the browser should be redirected after the authentication is successful. It should have this format:
https://(host-name):(port)/acs
. - Select Use fully qualified username in SAML Response if that feature is required.
- Select Enable Response Signing to sign the SAML2 Responses returned after the authentication.
- Select Enable Assertion Signing to sign the SAML2 Assertions returned after the authentication. SAML2 relying party components expect these assertions to be signed by the Identity Server.
- Select Enable Signature Validation in Authentication Requests and Logout Requests if you need this feature configured.
- Select Enable Single Logout so that all sessions are terminated once the user signs out from one server. You can enter a Custom Logout URL if required.
- Select Enable Attribute Profile to enable this and add a claim by entering the claim link and clicking the Add Claim button.
- Select Enable Audience Restriction to restrict the audience. You may add audience members using the Audience text box and clicking the Add Audience button.