Nametag Integration for Apereo CAS
Add high-assurance, self-service password and lost-MFA-device recovery to your self-hosted Apereo CAS single sign-on server.
Overview
The Nametag integration for Apereo CAS adds high-assurance, self-service password reset and lost-MFA-device reset to your self-hosted Apereo CAS single sign-on server. When a user needs to recover their account, CAS delegates the “prove it’s really you” step to Nametag (government-ID + liveness). After a successful verification, CAS itself performs the reset against your backing store (LDAP/AD/JDBC) β Nametag never stores or receives your users’ PII, and no PII is written into CAS.
Because CAS is open-source software you host yourself, connecting is a credential exchange rather than a hosted sign-in: you give Nametag your CAS URL, and Nametag gives you OpenID Connect credentials plus a configuration snippet to paste into your CAS overlay. You never paste a Nametag API key into the console.
How it works
- A user starts recovery β from the Nametag recovery microsite or from CAS itself (
/login?doChangePassword=true, or the Account Profile “remove device” action). - CAS (via
pac4j) redirects the user to the Nametag OpenID Provider to verify their identity. - The user completes Nametag verification. Nametag mints a short-lived, ES256-signed
id_tokencarrying only a verified-subject identifier and an assurance level β no PII. - The Nametag recovery module in your CAS overlay validates that
id_tokenagainst the Nametag OIDC discovery and JWKS endpoints. Validation is fail-closed: if the token is missing, expired, wrong-issuer, below the required assurance, or the JWKS endpoint is unreachable, recovery is denied. - On success, CAS runs the reset itself: its password-management flow resets the password, or its device registry removes the lost MFA device so the user re-enrolls.
Prerequisites
Before setting up the integration, ensure you have:
- An active Nametag account with the Apereo CAS integration enabled for your tenant.
- An Apereo CAS 7.x deployment built with the WAR overlay pattern (or CAS Initializr). CAS 6.6+ works for the delegated-OIDC path β see version caveats below.
- The delegated-authentication module (
cas-server-support-pac4j-webflow) and the password-management module (cas-server-support-pm-webflow, plus a backend such as-pm-ldapor-pm-jdbc) in your overlay. For lost-MFA reset, the Account Profile Management feature enabled. - Access to edit your overlay and redeploy CAS.
Step 1 β Start setup in the Nametag console
- In the Nametag console, go to Integrations β Add integration.
- Choose Apereo CAS.
- The setup wizard opens and shows all steps up front.
Step 2 β Connect your CAS server
- Enter your CAS base URL (for example
https://cas.university.edu/cas). - Nametag registers your CAS as a delegated OpenID Connect client and shows a clientΒ ID, a clientΒ secret (copy it now β it is shown once), and your issuer / discovery URL.
Step 3 β Add the Nametag module to your CAS overlay
-
Select Download module in the wizard to get
cas-server-support-nametag-recovery-1.0.0.jar, place it in your overlay (for examplelibs/), and reference it as a file dependency:implementation files("libs/cas-server-support-nametag-recovery-1.0.0.jar") -
Add the configuration the wizard generated for your tenant. Store the client secret as an environment variable or secret, not in plain configuration. The wizard fills in the exact
issuerandclient-idfor your connection:cas.authn.nametag.enabled=true cas.authn.nametag.issuer=<issuer shown in the wizard> cas.authn.nametag.client-id=<client id shown in the wizard> cas.authn.nametag.client-secret=${NAMETAG_CLIENT_SECRET} cas.authn.nametag.assurance-level=nametag.high cas.authn.nametag.actions=password_reset,mfa_device_resetThe module discovers the Nametag
authorize,token, and JWKS endpoints from the issuer’s/.well-known/openid-configurationdocument, so you only need the issuer. -
Rebuild and redeploy your CAS server.
Step 4 β Scope and coverage
Choose which users the integration applies to. The default is all CAS users; narrow by attribute or group if your deployment resolves them.
Step 5 β Recovery actions & assurance
- Password reset β after verification, CAS resets the password against LDAP/AD/JDBC.
- Lost MFA device reset β after verification, the module removes the registered authenticator so the user re-enrolls.
- Minimum assurance β verifications below this level are rejected and recovery is denied.
Step 6 β Review and activate
Confirm the summary and select Activate. Activation respects your tenant feature flag. Nothing is live until both the Nametag apereocas feature flag and cas.authn.nametag.enabled=true are set β the integration ships dark on both sides.
Managing the integration
From Integrations β Apereo CAS you can see connection status and recent recoveries, edit scope/actions/assurance, re-fetch the configuration snippet, rotate the client secret (update ${NAMETAG_CLIENT_SECRET} in CAS afterward), or disconnect (which revokes the issued credential).
Version caveats
- CAS 7.x β fully supported.
- CAS 6.6+ β delegated-OIDC recovery works; Account Profile Management for MFA-device removal is firmer in 7.x, so test lost-MFA reset before relying on it.
- CAS below 6.6 β not recommended; upgrade first.
Privacy & security
- No PII is stored in CAS or sent to CAS β only a signed verified-subject identifier and an assurance signal cross the boundary.
- Two credentials are kept distinct: the OIDC client credential authenticates your CAS to Nametag; the
id_tokenproves the user to your CAS. Treat the client secret like any credential and rotate it on schedule. id_tokenvalidation is fail-closed β if the Nametag discovery/JWKS endpoint is unreachable, recovery is denied rather than allowed.- Recovery requests expire after roughly 168 hours; a user who starts but doesn’t finish must restart.
Troubleshooting
- Connection verification fails β confirm CAS redeployed with the module,
cas.authn.nametag.enabled=true, and that the client ID / secret / issuer match the console. Confirm CAS can reach the Nametag discovery and JWKS URLs. - Recovery denied for a legitimate user β check the assurance threshold, that the action is enabled, and that the request hasn’t expired.
- Nothing happens on “forgot password” β confirm the
pac4jandpm-webflowmodules are present and the recovery entry point (doChangePasswordor the microsite) is wired.