Airlock supports WebAuthn as a second authentication factor. WebAuthn is used when logging in to Airlock (airsh login or the web interface), as well as when connecting to SSH nodes and Kubernetes (airsh ssh, kubectl).
Hardware keys (YubiKey, SoloKey) and biometric authenticators (Touch ID, Windows Hello) are supported.
Prerequisites
- A WebAuthn hardware key or a built-in biometric authenticator.
- A browser with WebAuthn support.
- The
airctlutility for cluster configuration.
Step 1. Enable WebAuthn
Dynamic configuration
Edit the cluster_auth_preference resource:
airctl edit capExample configuration:
kind: cluster_auth_preference
version: v2
metadata:
name: cluster-auth-preference
spec:
type: local
second_factor: "on"
webauthn:
rp_id: airlock.example.com
attestation_allowed_cas:
- "/path/to/allowed_ca.pem"
attestation_denied_cas:
- "/path/to/denied_ca.pem"Static configuration
Fragment of /etc/airlock.yaml:
auth_service:
authentication:
type: local
second_factor: on
webauthn:
rp_id: airlock.example.com
attestation_allowed_cas:
- "/path/to/allowed_ca.pem"
attestation_denied_cas:
- "/path/to/denied_ca.pem"Restart the Auth Service after making changes.
webauthn fields
| Field | Description |
|---|---|
rp_id | Public domain of the Proxy Service (without https:// and port) |
attestation_allowed_cas | Allow-list CAs for verifying devices during registration |
attestation_denied_cas | Deny-list CAs — devices with these CAs are rejected |
All devices are allowed by default. Use attestation_denied_cas to restrict specific device models.
Starting from Airlock v10, WebAuthn replaces U2F. Existing U2F devices are supported automatically.
Step 2. Register a device
A user registers a WebAuthn device:
airsh mfa add
# Choose device type [TOTP, WEBAUTHN]: webauthn
# Enter device name: desktop yubikey
# Tap any *registered* security key or enter a code from a *registered* OTP device:
# Tap your *new* security key
# MFA device "desktop yubikey" added.If only OTP confirmation is needed during registration (without WebAuthn):
airsh mfa add --mfa-mode=otpStep 3. Log in via WebAuthn
After registering a device, confirmation is requested on login:
airsh login --proxy=airlock.example.com
# Enter password for Airlock user alice:
# Tap any security key or enter a code from a OTP device:
# > Profile URL: https://airlock.example.com
# Logged in as: alice
# Cluster: airlock.example.com
# Roles: access, editor
# Logins: alice
# Kubernetes: enabled
# Valid until: 2026-07-05 14:00:00 +0300 MSK [valid for 12h0m0s]WebAuthn on Airlock login is required only for local users. For SSO, configure MFA on the IdP side.
Migrating from U2F
If U2F was previously used, Airlock automatically derives the WebAuthn configuration from U2F. Preserve the u2f.app_id field to avoid re-registering devices:
auth_service:
authentication:
type: local
second_factor: on
u2f:
app_id: https://airlock.example.com
webauthn:
rp_id: airlock.example.com
attestation_allowed_cas:
- "/path/to/u2f_attestation_ca.pem"Next steps
- Configure OTP/TOTP as an alternative second factor
- Review access policies