ServiceNow (SNOW) UI Action to validate caller identity using DUO mobile multi factor authentication (MFA)
Apleto, Inc strives to deliver solutions to simplify information technology support processes for end users and staff with tools like this one and our JustHelp Agent.
The quick start instructions are intended to get you going so you can demonstrate this functionality. In production you would need to modify the container code to support authentication and run it behind a load balancer or kubernetes ingress to enable https.
- Access to a ServiceNow instance
- Access to the DUO Auth API
- DUO Auth API Integration Key
- DUO Auth API Secret Key
- DUO Auth API Host
- A machine that can be accessed by the MID using http port 3030
- Theoretically this could be the ServiceNow MID Server
- This machine should have Docker installed and be able to run linux containers
- A Microsoft SQL Server / Database. This can be a shared SQL server and is only used to log requests for reporting...
- The user account should have the required permissions to create the table
This could be you MID server, if your MID server can support running Docker.
Update software repos
sudo apt update
Install Docker
sudo apt install docker.io
Start the Docker service
sudo systemctl start docker
Configure Docker to auto start on reboot
sudo systemctl enable docker
Clone this repo to the Server
git clone https://github.com/apleto/ServiceNow-DUO-Push-UI-Action.git
cd ServiceNow-DUO-Push-UI-Action/
Update the production config file with SQL server info
nano config/default.json
## UPDATE LINE 40 and save the file
"mssql": "mssql://<USERNAME>:<PASSWORD>@<MSSQL_SERVER>:1433/<DATABASE>"
Build the Docker image
sudo docker build -t duoauth:1.0.0 .
Run the container
sudo docker run -d -p 3030:3030 -e "IKEY=<DUO AUTHAPI INTERGRATION KEY>" -e "SKEY=<DUO AUTHAPI SECRET KEY" -e "HOST=asdf" duoauth:1.0.0
Make sure the container is running
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07281b608bfb duoauth "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 3000/tcp, 0.0.0.0:3030->3030/tcp gallant_mcclintock
Test the server
Please not that if everything is working the "username" here will get a DUO push on their device.
curl -k -d '{"username": "<USERNAME>", "requested_by": "<USERNAME>"}' -H 'Content-Type: application/json' http://localhost:3030/auth
## result
{"result":"allow","status":"allow","status_msg":"Success. Logging you in..."}
- In ServiceNow go to System Update Sets -> Retrieved Update Sets -> Import XML and import the duo_push_update_set.xml
2. Open the SMB - DUO Push update set -> Preview Update Set -> Commit Update Set
The REST method configures ServiceNow to talk to the server / container that talks to the DUO Auth API
- Go to System Web Services -> REST Message -> DUO Auth
- Update the Endpoint - This should be the FQDN or IP for the DUO Auth API container running on your network.
- Set the MID server to the MID server running on your network
From a ServiceNow user form click DUO Push
If you need help or find an issue please let us know by creating an issue on GitHub here.