feat: webauthn and mfa everywhere#380
Merged
chance-coleman merged 10 commits intomainfrom Mar 28, 2025
Merged
Conversation
5 tasks
mjnagel
reviewed
Mar 25, 2025
mjnagel
reviewed
Mar 25, 2025
mjnagel
reviewed
Mar 25, 2025
slaskawi
previously approved these changes
Mar 26, 2025
mjnagel
reviewed
Mar 26, 2025
Collaborator
mjnagel
left a comment
There was a problem hiding this comment.
One more general comment just to make sure it's present here somewhere: This currently only adds webauthn support as an additional authentication factor. Users will need to have a separate "primary" auth factor (user/pass or x509) as well. While we could add support for "webauthn only" auth, we don't currently see the need for that - this could be reevaluated and supported in the need arose though.
slaskawi
previously approved these changes
Mar 27, 2025
chance-coleman
added a commit
to defenseunicorns/uds-core
that referenced
this pull request
Mar 27, 2025
## Description Related PR to the [uds-identity-config PR](defenseunicorns/uds-identity-config#380). This allows for new templated values to be passed in to the identity config for configuring webauthn MFA as well as MFA for everywhere ( x509 included). ## Related Issue Related: [uds-identity-config PR](defenseunicorns/uds-identity-config#380) Related: [Issue](defenseunicorns/uds-identity-config#236) ## Type of change - [ ] Bug fix (non-breaking change which fixes an issue) - [x] New feature (non-breaking change which adds functionality) - [ ] Other (security config, docs update, etc) ## Steps to Validate - not much to verify here other than deploying uds-core and making sure that new values are present in the keycloak realm secret. additional testing steps present in the identity-config PR. ## Checklist before merging - [x] Test, docs, adr added or updated as needed - [x] [Contributor Guide](https://github.com/defenseunicorns/uds-template-capability/blob/main/CONTRIBUTING.md) followed
mjnagel
reviewed
Mar 28, 2025
mjnagel
approved these changes
Mar 28, 2025
mjnagel
pushed a commit
to BagelLab/uds-core
that referenced
this pull request
Nov 14, 2025
## Description Related PR to the [uds-identity-config PR](defenseunicorns/uds-identity-config#380). This allows for new templated values to be passed in to the identity config for configuring webauthn MFA as well as MFA for everywhere ( x509 included). ## Related Issue Related: [uds-identity-config PR](defenseunicorns/uds-identity-config#380) Related: [Issue](defenseunicorns/uds-identity-config#236) ## Type of change - [ ] Bug fix (non-breaking change which fixes an issue) - [x] New feature (non-breaking change which adds functionality) - [ ] Other (security config, docs update, etc) ## Steps to Validate - not much to verify here other than deploying uds-core and making sure that new values are present in the keycloak realm secret. additional testing steps present in the identity-config PR. ## Checklist before merging - [x] Test, docs, adr added or updated as needed - [x] [Contributor Guide](https://github.com/defenseunicorns/uds-template-capability/blob/main/CONTRIBUTING.md) followed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Description
This PR adds support for configuring WebAuthn MFA for x509 (CAC) users. Historically, our implementation assumed that when a user authenticated with x509, no further authentication (e.g., OTP or passkey) was necessary. However, feedback from certain environments indicated a requirement for MFA even for x509 users.
Key Changes
Conditional MFA for x509 Users:
We’ve introduced conditional logic in our custom registration validation plugin. This logic now allows administrators to optionally require MFA (via OTP and/or WebAuthn Register Passwordless) for x509 users. The new behavior is controlled via the environment variable X509_MFA_ENABLED. When enabled (set to true), the plugin adds the required actions for OTP and WebAuthn even for x509 users; otherwise, it applies these only to local (username/password) users.
Environment Variable Mapping:
The new configuration settings are mapped in the same manner as our existing realm and theme environment variables. For example, the following variables in our values.yaml/uds-bundle.yaml are now available:
Backward Compatibility:
By default, the new behavior is disabled (i.e. X509_MFA_ENABLED=false) to ensure that existing deployments do not break. Administrators can enable it as needed for environments with stricter security requirements.
uds-core PR that needs to merge first
Testing
git clone https://github.com/defenseunicorns/uds-core.git && cd uds-core && git checkout webauthn-mfa && cd ../uds run uds-core-integration-teststo get everything runningsso.uds.devshould present any changes made.Happy to pair on this and walk through it live
Related Issue
Fixes #236
Type of change
Checklist before merging