Ping Identity SAML Integration
This article provides instructions for setting up SAML 2.0 single sign-on (SSO) with Ping Identity as the Identity Provider (IdP). It also includes instructions on how to log in with SSO after the integration and make sure other users log in with SSO as well.
Prerequisites
- A public certificate and private key pair stored in the Java KeyStore (JKS) on the Agiloft server are used to sign, encrypt, and decrypt the SAML XML that is exchanged between Agiloft and your IdP. As part of the setup, you supply the JKS file path, password, and alias for your Agiloft server. If your KB is hosted by Agiloft, contact Support to get this information. If your KB is self-hosted, you may need to generate a key pair.
- By default, Agiloft supports the standard RSA, SHA-1, SHA-256, and SHA-512 cipher transformations for encrypting SAML messages. While these transformations suffice for most commonly used IdPs, you can configure Agiloft to use an alternate transform by setting the Custom Cipher transform for decrypting SAML Keys global variable.
- Agiloft supports provisioning or updating user records based on attributes sent by the IdP. If you want to create or update records during SAML login events, you need to map the IdP SAML attributes to fields in Agiloft. See Configure User Group, Team, and Fields Mapping below for more information.
Set Up SAML 2.0 SSO
The sections below guide you through the steps required to set up SSO with SAML 2.0. You don't have to complete the configuration in the order listed in this article, but it's organized to help streamline the setup and avoid switching between the Agiloft and IdP interfaces as much as possible. For example, you need to complete the Service Provider Details configuration in Agiloft before setting up your IdP, but it's helpful to complete the IdP setup before configuring group, team, and user fields mapping in Agiloft. To get started, go to Configure General Settings below.
Configure General Settings
The General tab includes settings that enable SAML SSO and control user record handling when users log in via SAML. Now that the general settings are configured, continue to Configure Service Provider Details below. You need to set up the service provider details before you can configure your IdP.
Configure Service Provider Details
The Service Provider Details tab contains details like the Entity ID and ACS endpoint values that you need to supply to the IdP in order to set up Agiloft as a service provider. It also includes options for configuring how users are matched to the IdP for identification and how Login is set if new users are provisioned. Next, supply the Java KeyStore file path, password, and alias for your Agiloft server. If your KB is hosted by Agiloft and you don't have this information, contact Support. If your KB is self-hosted, you may need to generate a key pair. Your IdP may enable you to customize the format of the NameID attribute. When selecting the value in Agiloft, keep the following notes in mind:https://
to the beginning of the string if it isn't already there.https://example.agiloft.com/Example+KB+Name
<saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">user@mydomain.com</saml:NameID>
<saml:Attribute Name="USERID_ATTRIB_NAME"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
<saml:AttributeValue
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xs:string">
user@mydomain.com
</saml:AttributeValue>
</saml:Attribute>
At this point, you can't finish the setup in Agiloft until you configure your IdP. Continue to Configure Ping for instructions on setting up your IdP.
Configure Ping
Follow the steps below to integrate Agiloft as a SAML service provider in Ping.
- First, to streamline the Ping setup, download the SAML Service Provider Metadata XML file from Agiloft so you can import it to Ping:
- In Agiloft, go to Setup > Access.
- Click Download SAML 2.0 Service Provider Metadata. The file includes the X.509 certificate.
- Now, sign on to your PingOne admin console and go to the environment in which you want to add an application.
- In the sidebar, go to Applications > Applications.
- Click the blue plus icon to create a new application.
- Enter a name for the application and configure any optional settings.
- For Application Type, select SAML Application and click Configure.
- On the SAML Configuration screen, select Import Metadata and click Select a file.
- Browse for and select the XML file you downloaded from Agiloft, then click Save. The console presents the Overview page for the application.
- At the bottom of the screen, click Download Metadata to download the IdP metadata XML file. You use the contents of this file to configure the identity provider details in Agiloft.
- Edit the configuration as needed. Refer to Ping's documentation on editing a SAML application:
- If you want to create or update user records in Agiloft based on attributes from Ping, add attribute mappings to send in the SAML assertion.
- By default, all users have access to the SAML application. You may want to change Access settings to limit access to specific groups.
- If necessary, enable the new application by sliding the enablement toggle.
Now that Ping is configured, return to Agiloft. If you want to configure IdP attribute to Agiloft field mappings, continue to Configure User Group, Team, and Fields Mapping below. If you don't want to configure mappings, proceed to Configure Identity Provider Details.
Configure User Group, Team, and Fields Mapping
In order to create or update user records on successful SAML logins, you need to map SAML attributes from your IdP to fields in Agiloft. Follow the steps below to configure attribute to field mappings. User data, like First Name, Last Name, and Email, defined directly in the People table or its subtables can be added or changed based on SAML attributes. User records and field values don't have to pre-exist in the system. Group and team values can also be assigned from attributes. However, groups and teams aren't defined in the People table. They are linked fields to the privileged Groups and Teams tables, which can't be updated via SAML. When Agiloft reads group or team attributes, it looks for an exact match in the corresponding table. If there isn't a match, the user gets an error and can't log in. If you want to set groups or teams from attributes, you must add those groups or teams to Agiloft first, or users won't be able to log in with SAML. Any group values you send have to exactly match a Group Name in the Groups table before users in those groups can log in with SAML. Any team values you send have to exactly match a Team Name in the Teams table before users in those teams can log in with SAML. The Login field is mapped on the Server Provider Details tab. Do not map Login on this tab.
SAML Attribute Mapping
The following image shows attribute mappings that are configured for an Agiloft SAML application in Ping:
The saml_subject attribute is the NameID that is mapped on the Service Provider Details tab. In this instance, it's customized to send Username as the NameID.
To map the attributes to fields in Agiloft, enter the application values in the relevant fields on the User Field(s) Mapping tab.
Now that user, group, and team mappings are configured, proceed to Configure Identity Provider Details to complete the SAML SSO setup.
Configure Identity Provider Details
Once Agiloft has been configured as a service provider in your IdP, you can add the identity provider details to Agiloft and complete the SAML configuration. Follow the steps below to configure the IdP details. Agiloft is now configured to allow SSO with SAML 2.0. If you chose to update user records on SAML login and haven't configured attribute to field mappings, go to Configure User Group, Team, and Fields Mapping. If the setup is complete, proceed to Log in with SAML for details on how to log in.
Log in with SAML
Once the integration is complete, users can access Agiloft with SAML 2.0 SSO. Follow the steps below to locate the SAML SSO login URL and share it with your users. https://example.agiloft.com/gui2/samlssologin.jsp?project=Example+KB+Name
STANDARD
. If a user logs in with SAML 2.0 SSO, the value is SAML20
. This value determines whether email hotlinks go to login.jsp
or samlssologin.jsp
. Don't edit a user's SSO Authentication Method because you might prevent them from accessing the system.
Force SSO Login
To force users to log in with SSO, you can prevent them from accessing Agiloft with their username and password. Follow the steps below to make the Password field optional in the Employees table and then remove passwords for employees who should log in with SSO. Now, users whose passwords were reset can only log in with SSO. If you also allow some external users to log in with SSO, repeat the process for the External Users table.$global.null
and click Next.
Generating a Key Pair
The SAML XML that is exchanged between Agiloft and your IdP is signed, encrypted, and decrypted using a public certificate and private key pair in the Java Keystore (JKS). If you host your own Agiloft server, you may need to generate the necessary PKCS 12 file containing the key pair in order to complete the SAML SSO setup. You can follow the steps below to generate a PKCS 12 file from your CA certificate and corresponding private key and then add the file to the keystore. If your KB is hosted by Agiloft, please contact Support to obtain keystore details for your server. OpenSSL is not installed on Windows systems by default. You can find information about OpenSSL distributions for Windows here. Add the PKCS 12 file to the keystore using the Keytool command. You can append the output file as either openssl pkcs12 -export -in <path_to_CA_certificate> -inkey <path_to_private_key> -certfile <path_to_CA_certificate> -out mykeystore.p12
.jks
or .keystore
.<Agiloft_install_dir>/jre/bin/keytool -importkeystore -srckeystore mykeystore.p12 -srcstoretype pkcs12 -destkeystore mycompany.keystore -deststoretype JKS