An awesome webapp that can be used as a Meraki WiFi Captive Portal aka Splash Page. Capabilities include the ability to use Okta SSO or your own authentication server, enhanced with Cisco DUO MFA!
Supported Features:
The Captive Portal utilises Cisco Meraki Click-through Authentication and a built-in authentication flow with DUO MFA that authenticates the user, via Okta SSO or via Custom Authentication, before serving the Meraki URL that enables network access. If you want to see it in action, you can checkout this 30s YouTube video.
The diagram below shows the splash page authentication flow when using Okta SSO with DUO MFA.
The diagram below shows the splash page authentication flow when using a custom authentication service with DUO MFA.
Please check here to learn more about the Meraki Click-through API.
Building this application couldn't be easier. There's two awesome options:
The splash page webapp that you are about to deploy has to be externally accessible, so if you are deploying this On-Premise or in the Cloud make sure that you have all your firewall rules setup for this. If you are deploying this locally in your machine, for testing purposes only, you can also use ngrok for exposing the webapp.
Before you deploy the application you need to set the env variables located in the /env folder.
For that you will need to have both a DUO and a Okta account, if you are using Okta.
integration key, secret key, and API hostnameakey by following Step 1 in this guideikey, skey, host (from Step 2) and akey (from Step 3) to the splashPageVariables.template filesplashPageVariables.template file as an .env file
cd env/ mv splashPageVariables.template splashPageVariables.env cd ..
Please note: In this demo the DUO Web SDKv2 is used. If you wish to use the latest DUO Web SDKv4 you will need to follow this guide to upgrade it from Web SDKv2.
Web and the Grant Type as Authorization Code by following this guideLogin redirect URI to a webpage of your choice (doesn't matter which one)baseUrlOKTA from here and add it to the splashPageVariables.env fileIf you are using a 3rd Party Authentication service or one that you have built, you will need to add the base URL of that auth service to the baseUrlAuth variable in the splashPageVariables.env file.
git clone https://github.com/JPedro2/meraki-duo-integration
brew install node
cd meraki-duo-integration/customSplashPage/
npm install
npm run buildnpm start
git clone https://github.com/JPedro2/meraki-duo-integration
docker-compose to build the containerised application
cd meraki-duo-integration/
docker-compose up -d --buildOnce you have the webapp running you will need to configure the SSID of your Meraki wireless network to support the splash page.
You will also need to setup the Walled Garden, which determines what network access the client has before authorization. This is critical for redirecting the client to the webapp, as well as the DUO and Okta authentication services.
<IP/Domain-of-the-Webapp-Deployed> *<your-Okta-domain> *.duo.com *.duosecurity.com *.duomobile.s3-us-west-1.amazonaws.com
<webapp-ip/domain>:3006/signonokta - if you are using Okta<webapp-ip/domain>:3006/signon - if you are using Custom Auth<webapp-ip/domain>/signonokta - if you are using Okta<webapp-ip/domain>/signon - if you are using Custom AuthThis project is licensed to you under the terms of the Cisco Sample Code License.
Owner
Contributors
Categories
Products
MerakiDuoProgramming Languages
JavaScriptLicense
Code Exchange Community
Get help, share code, and collaborate with other developers in the Code Exchange community.View Community