|
| 1 | +--- |
| 2 | +pcx_content_type: how-to |
| 3 | +title: Independent MFA |
| 4 | +sidebar: |
| 5 | + order: 4 |
| 6 | +tags: |
| 7 | + - Authentication |
| 8 | +--- |
| 9 | + |
| 10 | +import { Tabs, TabItem, APIRequest, Details } from "~/components"; |
| 11 | + |
| 12 | +Independent multi-factor authentication (MFA) allows you to enforce MFA requirements directly in Access without relying on your identity provider (IdP). Users authenticate with their IdP as usual, and Access prompts for an additional authentication method before granting access to the application. |
| 13 | + |
| 14 | +## Supported MFA methods |
| 15 | + |
| 16 | +| MFA method | Description | |
| 17 | +| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 18 | +| Authenticator application | Time-based one-time passwords (TOTP) generated by apps such as Google Authenticator, Microsoft Authenticator, or Authy. Access supports one TOTP authenticator per user at a time. | |
| 19 | +| Security key | YubiKeys and hardware security keys that support the [WebAuthn](https://www.w3.org/TR/webauthn-2/) standard. Users can enroll multiple security keys. | |
| 20 | +| Biometrics | Built-in device authenticators that use [WebAuthn](https://www.w3.org/TR/webauthn-2/), including Apple Touch ID, Apple Face ID, and Windows Hello. Users can enroll multiple biometrics. | |
| 21 | + |
| 22 | +## Turn on independent MFA |
| 23 | + |
| 24 | +Before you can [enforce independent MFA on applications and policies](/cloudflare-one/access-controls/policies/mfa-requirements/#independent-mfa), you must turn on independent MFA at the organization level. |
| 25 | + |
| 26 | +<Tabs syncKey="dashPlusAPI"> <TabItem label="Dashboard"> |
| 27 | + |
| 28 | +1. In the [Cloudflare dashboard](https://dash.cloudflare.com/), go to **Zero Trust** > **Access controls** > **Access settings**. |
| 29 | +2. Under **Allow multi-factor authentication (MFA)**, select the [MFA methods](#supported-mfa-methods) you want to allow in your organization. |
| 30 | +3. Set an **Authentication duration**. This determines how long a user can log in to Access without being prompted for MFA again. If the user does not have an active MFA session for the required authenticator method, they must complete MFA in addition to IdP authentication. |
| 31 | +4. (Optional) To apply your MFA methods and authentication duration to all Access applications, select **Apply global MFA settings by default**. You can [override the global MFA settings](/cloudflare-one/access-controls/policies/mfa-requirements/#configure-independent-mfa-for-an-application) for individual applications and policies. |
| 32 | + :::note |
| 33 | + The [App Launcher](/cloudflare-one/access-controls/access-settings/app-launcher/) is exempt from the global MFA requirement. Users must be able to access the App Launcher without MFA to enroll their authenticators. |
| 34 | + ::: |
| 35 | +4. Select **Save**. |
| 36 | + |
| 37 | +</TabItem> <TabItem label="API"> |
| 38 | + |
| 39 | +1. Get your existing Zero Trust organization configuration: |
| 40 | + |
| 41 | + <APIRequest |
| 42 | + path="/accounts/{account_id}/access/organizations" |
| 43 | + method="GET" |
| 44 | + /> |
| 45 | + |
| 46 | +2. Send a `PUT` request to update your organization's MFA settings. To avoid overwriting your existing configuration, the `PUT` request body should contain all fields returned by the previous `GET` request. |
| 47 | + |
| 48 | + <APIRequest |
| 49 | + path="/accounts/{account_id}/access/organizations" |
| 50 | + method="PUT" |
| 51 | + json={{ |
| 52 | + auth_domain: "your-team-name.cloudflareaccess.com", |
| 53 | + name: "Your Team Name", |
| 54 | + mfa_config: { |
| 55 | + allowed_authenticators: ["totp", "biometrics", "security_key"], |
| 56 | + session_duration: "24h", |
| 57 | + }, |
| 58 | + mfa_required_for_all_apps: false, |
| 59 | + }} |
| 60 | + /> |
| 61 | + |
| 62 | + Set `allowed_authenticators` to an array containing one or more of: |
| 63 | + |
| 64 | + - `totp` — Authenticator application (time-based one-time passwords). |
| 65 | + - `biometrics` — Biometrics (Touch ID, Face ID, Windows Hello). |
| 66 | + - `security_key` — Security keys (YubiKeys) |
| 67 | + |
| 68 | + Set `session_duration` to a duration string (for example, `30m`, `1h`, `24h`). To require MFA on every access, use `0m`. |
| 69 | + |
| 70 | +</TabItem> </Tabs> |
| 71 | + |
| 72 | +After you turn on independent MFA, users can [enroll authenticators](#enroll-authenticators) through the [App Launcher](/cloudflare-one/access-controls/access-settings/app-launcher/). |
| 73 | + |
| 74 | +## Turn off independent MFA |
| 75 | + |
| 76 | +:::caution |
| 77 | +Turning off independent MFA removes MFA protection on all Access applications. Before turning off independent MFA, verify that your Access policies provide adequate coverage. Remove [custom MFA settings](/cloudflare-one/access-controls/policies/mfa-requirements/) from any applications and policies that use it, then turn off independent MFA at the organization level. |
| 78 | +::: |
| 79 | + |
| 80 | +To turn off independent MFA for the organization: |
| 81 | + |
| 82 | +<Tabs syncKey="dashPlusAPI"> <TabItem label="Dashboard"> |
| 83 | + |
| 84 | +1. In the [Cloudflare dashboard](https://dash.cloudflare.com/), go to **Zero Trust** > **Access controls** > **Access settings**. |
| 85 | +2. Under **Allow multi-factor authentication (MFA)**, turn off **Apply global MFA settings by default**. |
| 86 | +3. Turn off all MFA methods (**Biometrics**, **Security key**, and **Authenticator application**). |
| 87 | + |
| 88 | +If you get an error updating MFA settings, ensure that you have removed custom MFA settings from all applications and policies. |
| 89 | + |
| 90 | +</TabItem> <TabItem label="API"> |
| 91 | + |
| 92 | + |
| 93 | +1. Get your existing Zero Trust organization configuration: |
| 94 | + |
| 95 | + <APIRequest |
| 96 | + path="/accounts/{account_id}/access/organizations" |
| 97 | + method="GET" |
| 98 | + /> |
| 99 | + |
| 100 | +2. Send a `PUT` request with an empty `allowed_authenticators` array. To avoid overwriting your existing configuration, the `PUT` request body should contain all fields returned by the previous `GET` request. |
| 101 | + |
| 102 | + <APIRequest |
| 103 | + path="/accounts/{account_id}/access/organizations" |
| 104 | + method="PUT" |
| 105 | + json={{ |
| 106 | + auth_domain: "your-team-name.cloudflareaccess.com", |
| 107 | + name: "Your Team Name", |
| 108 | + mfa_config: { |
| 109 | + allowed_authenticators: [], |
| 110 | + }, |
| 111 | + }} |
| 112 | + /> |
| 113 | + |
| 114 | +</TabItem> </Tabs> |
| 115 | + |
| 116 | +## Enroll authenticators |
| 117 | + |
| 118 | +Users enroll authenticators through the [App Launcher](/cloudflare-one/access-controls/access-settings/app-launcher/). |
| 119 | + |
| 120 | +To enroll an authenticator: |
| 121 | + |
| 122 | +1. Go to your organization's App Launcher at `<your-team-name>.cloudflareaccess.com`. |
| 123 | +2. Log in with your identity provider or with a one-time PIN (OTP). |
| 124 | +3. Go to **Account** > **MFA devices** > **Add an MFA device**. |
| 125 | + :::note |
| 126 | + Administrators can also share a direct enrollment link to help onboard users: `<your-team-name>.cloudflareaccess.com/AddMfaDevice` |
| 127 | + ::: |
| 128 | +4. Select the authenticator type you want to enroll and follow the on-screen instructions. |
| 129 | + |
| 130 | + <Details header="Authenticator application"> |
| 131 | + 1. Select **Authenticator application**. |
| 132 | + 2. Scan the QR code with your authenticator app (for example, Google Authenticator, Microsoft Authenticator, or Authy). Alternatively, you can manually enter the setup key into your authenticator app. Use SHA1 as the hash function and set the time-step size to 30 seconds. |
| 133 | + 3. Enter the 6-digit time-based one-time password (TOTP) generated by your authenticator app to verify enrollment. |
| 134 | + |
| 135 | + :::note |
| 136 | + You can only have one TOTP authenticator enrolled at a time. If you use multiple devices, scan the same QR code on each device during enrollment. To replace an existing TOTP authenticator, delete it first and then enroll a new one. |
| 137 | + ::: |
| 138 | + </Details> |
| 139 | + |
| 140 | + <Details header="Security key"> |
| 141 | + 1. Select **Security key**. |
| 142 | + 2. When your browser prompts you, insert your security key and follow the on-screen instructions. |
| 143 | + 3. After your browser confirms the registration, the security key is enrolled. |
| 144 | + |
| 145 | + You can enroll multiple security keys for backup purposes. |
| 146 | + </Details> |
| 147 | + |
| 148 | + <Details header="Biometrics"> |
| 149 | + 1. Select **Biometrics** > **Register biometrics**. |
| 150 | + 2. You will be prompted to enroll with an authenticator type that is available on your device (for example, **Add macOS Touch ID** or **Add Windows Hello**). |
| 151 | + 3. After your browser confirms the registration, the platform authenticator is enrolled. |
| 152 | + </Details> |
| 153 | + |
| 154 | +You can now use these authenticators to log in to your organization's applications. |
| 155 | + |
| 156 | +### Delete an authenticator |
| 157 | + |
| 158 | +Users can delete their own authenticators from the App Launcher: |
| 159 | + |
| 160 | +1. Go to your organization's App Launcher at `<your-team-name>.cloudflareaccess.com`. |
| 161 | +2. Go to **Account** > **MFA devices**. |
| 162 | +3. Select the 3-dot menu next to the MFA device, then select **Remove MFA device**. |
| 163 | + |
| 164 | +Administrators can also [delete authenticators on behalf of users](/cloudflare-one/access-controls/access-settings/independent-mfa/#delete-a-user-authenticator). |
| 165 | + |
| 166 | +## Manage user authenticators |
| 167 | + |
| 168 | +Administrators can view and delete authenticators enrolled by users. This is useful for resolving lockouts or responding to security events. |
| 169 | + |
| 170 | +### View user authenticators |
| 171 | + |
| 172 | +To view a user's enrolled authenticators: |
| 173 | + |
| 174 | +1. In the [Cloudflare dashboard](https://dash.cloudflare.com/), go to **Zero Trust** > **Team & Resources** > **Users**. |
| 175 | +2. Select a user. |
| 176 | +3. Go to **MFA devices**. Each entry shows the authenticator's ID, its user-configured name, and the MFA method. |
| 177 | + |
| 178 | +### Delete a user authenticator |
| 179 | + |
| 180 | +If a user is locked out or you need to revoke an authenticator for security reasons, you can delete it from the dashboard or API. |
| 181 | + |
| 182 | +<Tabs syncKey="dashPlusAPI"> <TabItem label="Dashboard"> |
| 183 | + |
| 184 | +1. In the [Cloudflare dashboard](https://dash.cloudflare.com/), go to **Zero Trust** > **Team & Resources** > **Users**. |
| 185 | +2. Select the user whose authenticator you want to delete. |
| 186 | +3. Under **MFA devices**, find the authenticator and select **Delete**. |
| 187 | + |
| 188 | +The user will need to enroll a new authenticator the next time they access an application that requires MFA. |
| 189 | + |
| 190 | +</TabItem> <TabItem label="API"> |
| 191 | + |
| 192 | +Send a `DELETE` request to remove a specific authenticator: |
| 193 | + |
| 194 | +<APIRequest |
| 195 | + path="/accounts/{account_id}/access/users/{user_id}/mfa_authenticators/{authenticator_id}" |
| 196 | + method="DELETE" |
| 197 | +/> |
| 198 | + |
| 199 | +Parameters: |
| 200 | + |
| 201 | +- `user_id` — The UUID of the user. You can find this in the user details under **Team & Resources** > **Users**. |
| 202 | +- `authenticator_id` — The unique identifier for the authenticator. |
| 203 | + |
| 204 | +</TabItem> </Tabs> |
| 205 | + |
| 206 | +### Lockout recovery |
| 207 | + |
| 208 | +If a user loses access to all of their enrolled authenticators: |
| 209 | + |
| 210 | +1. [Delete](#delete-a-user-authenticator) the user's authenticators. |
| 211 | +2. The user can then access a protected application and will be provided a link to enroll a new authenticator. |
| 212 | +3. Alternatively, share the direct enrollment link with the user: `<your-team-name>.cloudflareaccess.com/AddMfaDevice`. |
| 213 | + |
| 214 | +:::tip |
| 215 | +To prevent lockouts, users should enroll multiple authenticators (for example, a security key and an authenticator application) when available. |
| 216 | +::: |
| 217 | + |
| 218 | +## Related links |
| 219 | + |
| 220 | +- [Enforce MFA on applications and policies](/cloudflare-one/access-controls/policies/mfa-requirements/) |
0 commit comments