ServiceNow
How to protect ServiceNow with Multi-factor authentication (MFA) using Integrity by Fortified ID
Scenario
In this scenario, we will setup ServiceNow as an OpenID Connect Relying Party and connect it to Integrity, acting as an OpenID Connect Provider.
Any authentication method provided by Integrity may be used for this scenario.
The example below describes authentication with Username and Password, using an LDAP/Active Directory account with the mail attribute set.
Prerequisite
There are some prerequisite for this use case. You will need the following environment:
LDAP directory. The users to authenticate reside in this user directory. The example code is configured using an Active Directory. We are using the mail attribute on the Active Directory user.
The scenario server must be published online.
Communication access (https) from the ServiceNow instance to the scenario server.
A front-end web server, terminating SSL, must be placed in front of the Integrity server. The front-end web server must proxy all traffic to integrity, using port 8080. An apache example config is present here.
The email address of the user must be present in the ServiceNow user store.
Before you start enabling external authentication providers in ServiceNow, make sure you enable Account Recovery Context on your administrator user to avoid lockouts.
Note. All configuration is carried out on the scenario server. Testing is carried out in any web browser.
Configuration
Install and prepare configuration
Download and install Integrity Web
To install Integrity Web, se documentation and installation.
All data in the server-config.json will be replaced with data from this use case.
At the bottom of this page you have the entire configuration to paste to your server-config.file. In the steps below we will explain the part of the configuration you need to change to map to your environment.
Go to bottom of the page or click the link right, Complete server-config.json file
Copy the information and paste it to your server-config.json file.
Update configuration to map your environment
In this section we will look at parts of the configuration and add/replace data for your environment. In this use case we are using the globals concept which is using variables to easily replace data specific to an environment or if a value is used in many places just update it in one place.
file_paths The file paths below is created where a folder called /customer is root and a subfolder is called config which stored the server-config.file. Then there are a number of subfolders under customer depending in the use case. The file paths might be different depending if you install in Windows/Linux or Docker. Below is an example of a folder structure.
Find in module globals section: file-paths
base_dir is the top folder where data is located that you do not want to be overwritten by an upgrade. Update the base_dir folder to map your installation.
For Windows the value is correct
If you use Docker, the change the value to ".", result should look like: "base_dir": ".",
ldap Update the ldap information to map your environment.
Find in module globals section: ldap
Create a test ldap user Make sure you have a test user to test with. Make sure the user has a value in the mail attribut since it is used as username to login with.
http
Update the http information to map your environment. This is the port that Integrity Web will use to host the http service.
Find in module globals section: http.
keystore
Either you download and use the test certificate in this scenario provided by us, if so you do not need to change anything. If you have a certificate then update the values below to map your certificate.
Find in module globals section: keystore
Public adress
Set the server domain. This is the public address that integrity will respond to.
OIDC relying party This defines service now as a OIDC relying party. Change client_secret to any value of your choice. This will be set in the ServiceNow configuration. Change the ServiceNow domain to match your environment.
Get OpenID Connect Discovery URL
Start Integrity Web. Verify logs to make sure it was started correctly.
Open a web browser.
Open the Discovery URL: https://<your_domain>/oidc/tenant1/.well-known/openid-configuration
A JSON object should be displayed, showing properties of the OpenID Connect Provider.
Configure ServiceNow
Trust needs to be established between the RP (ServiceNow) and the OP (Integrity Web).
Add Integrity Web as a trusted identity provider
Login to your ServiceNow domain as an administrator.
Activate the Multi-provider SSO plugin using this guide.
In the left menu, search for SSO
Select Properties and Enable SSO
In the left menu, search for Identity Providers.
Click New
Select OpenID Connect
Enter the OP Discovery URL (fetched in previous step above)
Enter a name
Enter the client_id and client_secret (must match the configuration above)
Enter the SSO label
Enable Show as login option
Save
Test the configuration
Login to ServiceNow using Integrity WEB as the authentication provider
Open a browser
Browse to https://<your_servicenow_domain>/
Click on the provider
You should be redirected to Integrity Web.
You should be prompted for authentication.
After authentication, you should be redirected back to your ServiceNow domain.
You should now be logged in.
Troubleshooting
If the error message is displayed by ServiceNow, go to 3. If the error message is displayed by Integrity, go to 2.
Consult the server.log file to find the error. Fix accordingly.
Login to your servicenow domain as an administrator.
In the left menu, search for log.
Open System logs
View the log to find the error. Fix accordingly.
Complete server-config.json file
Additional information
Integrity Web can be setup with multiple logical OpenID Connect Providers. This is applicable in use cases such as if you would like ServiceNow to present a list of different authentication methods.
Would you like to learn more about OpenID Connect, MFA or identity management for ServiceNow? Please contact Fortified ID for more information!
Last updated