From 0eb0d630d9a841dfc1652861cbb87d3e972027a8 Mon Sep 17 00:00:00 2001 From: jnfrati Date: Thu, 16 Apr 2026 16:33:34 +0200 Subject: [PATCH] Add docs for MFA totp --- .../local-mfa/totp-setup.png | Bin 0 -> 55610 bytes .../local-mfa/totp-verify.png | Bin 0 -> 27619 bytes src/components/NavigationDocs.jsx | 4 + src/pages/selfhosted/configuration-files.mdx | 7 ++ .../identity-providers/enable-local-mfa.mdx | 116 ++++++++++++++++++ 5 files changed, 127 insertions(+) create mode 100644 public/docs-static/img/selfhosted/identity-providers/local-mfa/totp-setup.png create mode 100644 public/docs-static/img/selfhosted/identity-providers/local-mfa/totp-verify.png create mode 100644 src/pages/selfhosted/identity-providers/enable-local-mfa.mdx diff --git a/public/docs-static/img/selfhosted/identity-providers/local-mfa/totp-setup.png b/public/docs-static/img/selfhosted/identity-providers/local-mfa/totp-setup.png new file mode 100644 index 0000000000000000000000000000000000000000..c57694c72e245d2fc50a5805c4d339e05acda702 GIT binary patch literal 55610 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 z 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 U8ZQ%${FXB(jP(nSUApyu0FJ$59smFU literal 0 HcmV?d00001 diff --git a/public/docs-static/img/selfhosted/identity-providers/local-mfa/totp-verify.png b/public/docs-static/img/selfhosted/identity-providers/local-mfa/totp-verify.png new file mode 100644 index 0000000000000000000000000000000000000000..96b8a8e006bda2b7814a323bd95f8ea313082b5c GIT binary patch literal 27619 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 literal 0 HcmV?d00001 diff --git a/src/components/NavigationDocs.jsx b/src/components/NavigationDocs.jsx index 3a88d3577..d0500e1b7 100644 --- a/src/components/NavigationDocs.jsx +++ b/src/components/NavigationDocs.jsx @@ -576,6 +576,10 @@ export const docsNavigation = [ title: 'Disable Local Auth', href: '/selfhosted/identity-providers/disable-local-authentication', }, + { + title: 'Enable MFA for local users', + href: '/selfhosted/identity-providers/enable-local-mfa' + }, { title: 'Self-hosted IdPs', isOpen: true, diff --git a/src/pages/selfhosted/configuration-files.mdx b/src/pages/selfhosted/configuration-files.mdx index e3e59346b..6da0bdb77 100644 --- a/src/pages/selfhosted/configuration-files.mdx +++ b/src/pages/selfhosted/configuration-files.mdx @@ -283,6 +283,13 @@ Configures the built-in identity provider (embedded IdP) that handles user authe Password for the initial admin user. Optional. Used together with `owner.email` to bootstrap the first admin account on initial deployment. + + Maximum MFA session duration from creation. After this time, local users must re-authenticate with TOTP regardless of activity. Default: `"24h"`. Only applicable when [local MFA](/selfhosted/identity-providers/enable-local-mfa) is enabled. + + + MFA session idle timeout. If the user is inactive for this duration, the MFA session expires and they must re-authenticate with TOTP. Default: `"1h"`. Only applicable when [local MFA](/selfhosted/identity-providers/enable-local-mfa) is enabled. + + When the embedded IdP is active, the server automatically hosts these OIDC endpoints: diff --git a/src/pages/selfhosted/identity-providers/enable-local-mfa.mdx b/src/pages/selfhosted/identity-providers/enable-local-mfa.mdx new file mode 100644 index 000000000..30161a04a --- /dev/null +++ b/src/pages/selfhosted/identity-providers/enable-local-mfa.mdx @@ -0,0 +1,116 @@ +import {Note, Warning} from "@/components/mdx" + +export const description = "Enable MFA for local users in your self-hosted NetBird deployment so that all users have to complete a TOTP challenge to login"; + +# Enable MFA for local users + +NetBird supports multi-factor authentication (MFA) for local users managed by the embedded identity provider. When enabled, all local users are required to set up and verify a time-based one-time password (TOTP) using an authenticator app before they can log in. + +This is useful when you want to add an extra layer of security to local users, as it will require **all** local users to authenticate using the TOTP code on every login. + + +MFA enforcement applies only to local users authenticated through the embedded IdP. Users who sign in via external identity providers (Google, Microsoft, Okta, etc.) are not affected, as MFA for those users should be configured in the respective IdP. + + +## Prerequisites + +- A self-hosted NetBird deployment using the [embedded identity provider](/selfhosted/identity-providers/local) +- Local authentication must be enabled (not [disabled](/selfhosted/identity-providers/disable-local-authentication)) +- Admin or Owner access to the NetBird Dashboard + +## Enabling MFA + +1. Log in to the NetBird Dashboard as an Admin or Owner +2. Navigate to **Settings** → **Authentication** +3. Toggle **Local MFA** to on +4. Click **Save** + +Once enabled, all local users will be prompted to set up TOTP on their next login. + +## User experience + +### First login after MFA is enabled + +When a local user logs in for the first time after MFA is enabled, they are presented with a TOTP setup screen: + +1. The user sees a QR code and is prompted to scan it with an authenticator app (e.g., Google Authenticator, Authy, 1Password) +2. After scanning, the user enters the one-time code generated by their authenticator app +3. The user clicks **Verify** to complete the setup + +

+ TOTP Setup - Scan QR code with authenticator app +

+ +### Subsequent logins + +After the initial setup, every login requires a TOTP verification step: + +1. The user enters their email and password as usual +2. A second screen prompts for the one-time code from their authenticator app +3. The user enters the code and clicks **Verify** to complete the login + +

+ TOTP Verification - Enter code from authenticator app +

+ +## MFA session configuration + +NetBird will hold an MFA session after a user went through the whole authentication process, this session will let users skip the MFA authentication process +as long as the session is active. + +By default, MFA sessions last up to 24 hours and expire after 1 hour of inactivity. You can customize these values depending on your deployment type. + +| Setting | Description | Default | +|---------|-------------|---------| +| `mfaSessionMaxLifetime` | Maximum session duration from creation. After this time, the user must re-authenticate with MFA regardless of activity. | `24h` | +| `mfaSessionIdleTimeout` | Idle timeout. If the user is inactive for this duration, the MFA session expires and they must re-authenticate. | `1h` | + +### Combined setup (config.yaml) + +```yaml +server: + auth: + mfaSessionMaxLifetime: "24h" + mfaSessionIdleTimeout: "1h" +``` + +Restart the server after changing these values: + +```bash +docker compose restart netbird-server +``` + +### Older multi-container setup (management.json) + + +This section applies to deployments using the older multi-container architecture. If you deployed using `getting-started.sh`, you are on the combined setup and should use the `config.yaml` instructions above. See the [migration guide](/selfhosted/migration/combined-container) to upgrade. + + +```json +{ + "EmbeddedIdP": { + "Enabled": true, + "MfaSessionMaxLifetime": "24h", + "MfaSessionIdleTimeout": "1h" + } +} +``` + +Restart the Management service after changing these values: + +```bash +docker compose restart management +``` + +## Disabling MFA + +To disable MFA for local users: + +1. Navigate to **Settings** → **Authentication** +2. Toggle **Local MFA** to off +3. Click **Save** + + +Disable MFA removes the TOTP requirement but **does not** remove the stored TOTP authenticator information. If you enable MFA again +previously enrolled users will be prompted for the same authenticator they registered previously. +