Enterprise Single Sign-On for All

Duo Security Authentication

Duo Security is a two-step verification service the provides additional security for access to institutional and personal data.

Duo offers several options for authenticating users:

  • a mobile push notification and one-button verification of identity to a smartphone (requires the free Duo Mobile app)
  • a one-time code generated on a smartphone
  • a one-time code generated by Duo and sent to a handset via SMS text messaging
  • a telephone call from that will prompt you to validate the login request

See here for additional information.

1
2
3
4
5
<dependency>
     <groupId>org.apereo.cas</groupId>
     <artifactId>cas-server-support-duo</artifactId>
     <version>${cas.version}</version>
</dependency>

You may need to add the following repositories to the WAR overlay:

1
2
3
4
5
6
7
8
<repository>
    <id>duo</id>
    <url>https://dl.bintray.com/uniconiam/maven</url>
</repository>
<repository>
    <id>dupclient</id>
    <url>https://jitpack.io</url>
</repository>

Configuration

To see the relevant list of CAS properties, please review this guide.

Non-Browser MFA

The Duo Security module of CAS is able to also support non-browser based multifactor authentication requests. In order to trigger this behavior, applications (i.e. curl, REST APIs, etc) need to specify a special Content-Type to signal to CAS that the request is submitted from a non-web based environment.

In order to successfully complete the authentication flow, CAS must also be configured with a method of primary authentication that is able to support non-web based environments.

Here is an example using curl that attempts to authenticate into a service by first exercising basic authentication while identifying the request content type as application/cas. It is assumed that the service below is configured in CAS with a special multifactor policy that forces the flow to pass through Duo Security as well.

1
curl --location --header "Content-Type: application/cas" https://apps.example.org/myapp -L -u casuser:Mellon