Implement Two-Step Authentication Using Janssen Server and Duo Security#
This document explains how to use Janssen Server Duo interception script to configure a two-step authentication process with username and password as the first step, and Duo as the second step.
Duo Security is a SaaS authentication provider that supports multi-factor authentication including push-approvals, passcode, SMS-OTP etc. Duo provides web SDK via which clients like Janssen Server can integrate with Duo Security services.
Prerequisites#
- An account with Duo Security
- User being authenticated will need to download the Duo mobile app
- Janssen Server with Casa integrated
Enable Janssen Server Interception Script for Duo#
- Go to Janssen Server installation
- Get
duo_webpython library using commands belowcd /opt/jans/python/libs wget https://raw.githubusercontent.com/GluuFederation/community-edition-setup/master/static/auth/lib/duo_web.py sudo systemctl restart jans-auth - Use
jans-clito enable Duo script using instructions here. Set theenabledproperty for Duo script totrue - Confirm that the script has been marked enabled in CLI script listing. Alternatively, access Janssen Server's OpenID Connect configuration endpoint at URL below. In the response JSON, find
duolisted underacr_values_supportedhttps://jans-server-name/jans-auth/.well-known/openid-configuration
Configuring Duo credentials#
- In order to connect to Duo Security via web SDK, Janssen Server Duo interception script needs to be provided with credentials as below:
- ikey (integration key): Obtained from Duo security account
- skey (secret key): Obtained from Duo security account
- akey: Is an random alphanumeric key that need to be generated by following the instructions under
Generate an akeysection here
- Provide these values to the script by editing the placeholder JSON file located at
/etc/certs/duo_creds.jsonon Janssen Server. Replace placeholders with actual values and save the file. Sample contents ofduo_creds.jsonis shown below:
{"ikey": "replace-ikey-value", "skey": "replace-skey-value", "akey": "replace-akey-value"}
Configuring Custom Script Properties#
-
There are two mandatory properties that Janssen Server Duo interception script requires
duo_creds_file: Path to the file where values for ikey, skey and akey are stored. For example,/etc/certs/duo_creds.jsonduo_host: Name of the host supplied by the Duo Security for your web-sdk to connect. For example:api-random.duosecurity.com
Update the custom script using
jans-clito set values for these two properties.
Install Casa Duo plugin#
Follow these instructions to install Casa Duo plugin
Make Duo Default Authentication Method#
Change the default authentication method to duo using Jans-CLI by following these steps.
Test#
- After installing Casa Duo plugin, option to enable Duo as an authentication method would become available on Casa administration console under
Enabled Authentication Methods. - Administrator can enable Duo Security as authentication method by checking the box and clicking on
Save - At this point, any user can log into Casa and configure Duo as authentication method for individual's account using these steps
- During the next login attempt, user will be first presented with login/password authentication, if successful, Duo authentication screen will be presented.