↓ Перейти к основному содержимому
  1. Posts/
  2. Authentik/

Настройка двухфакторной аутентификации в Authentik

··1231 слово·6 минут· loading · loading · ·
Stilicho2011
Автор
Stilicho2011
Пишу о homelab, self-hosting, автоматизации и open-source решениях
Оглавление
Authentik - This article is part of a series.
Part : This Article
Tip

Если вам понравилась эта статья, вы можете стать спонсором на Boosty.

В предыдущих статьях мы с вами поговорили о том, как создавать и восстанавливать пароли по заданной нами политике, организовать автоматизированную регистрацию пользователей. В настоящей статье поговорим о настройке двухфакторной аутентификации, причем настроим ее таким образом, чтобы все пользователи были вынуждены настраивать в обязательном порядке двухфакторную аутентификацию. Я расскажу, как настроить аутентификацию с помощью TOTP кодов и WebAuthn приложений, а также настроим passwordless login.

Tip

Самая безопасная аутентификация - это аппаратные ключи вроде YubiKey, но это дорогое удовольствие, всегда надо иметь запасной ключ на случай утери первого, и у меня, к сожалению, нет такого оборудования для демонстрации. А сервис компании Cisco Duo на дату написания статьи на территории РФ временно не работает.

Note

На сайте уже опубликована статья, посвященная различиям TOTP, WebAuthn и Passwordless Login. Ознакомиться с ней можно по ссылке. Поэтому я предполагаю, что вы знаете, что такое TOTP, WebAuthn и Passwordless Login.

Прежде всего необходимо отметить, что в этой статье я описываю автоматизацию процесса, с моей точки зрения это наиболее оптимальный вариант. Но в то же время все можно сделать вручную. Для этого каждый юзер переходит в личные настройки, нажав значок шестеренки в верхнем правом углу, выбирает раздел MFA Devices > Enroll

Переход в MFA Devices - раздел Enroll в настройках пользователя

В ниспадающем меню выбираем TOTP или WebAuthn устройство и дальше следуем инструкциям.

Выбор типа устройства - TOTP или WebAuthn

Мы сделаем то же самое, но на глобальном уровне, таким образом, что любой пользователь Authentik обязан будет настроить двухфакторную аутентификацию. Для правильной работы TOTP кодов у вас должно быть установлено любое удобное вам приложение аутентификатор: Google Authenticator, Vaultwarden, Bitwarden, Яндекс.Ключ или даже Kaspersky Password Manager. Выбирайте наиболее удобное и комфортное решение для вас. Для WebAuthn и Passwordless Login подойдет любое устройство со входом по отпечатку пальца или Windows Hello (уверен, что аналог на Маке тоже работает). Сам я пользуюсь связкой Vaultwarden + Google Authenticator + Windows Hello. Все действия я выполняю из-под аккаунта администратора.

Настройка TOTP кодов
#

В принципе, как и в предыдущих статьях, мы можем с вами создать все необходимые потоки с нуля. Но для упрощения давайте воспользуемся дефолтным потоком. Переходим в Flows and Stages > Flows > default-authentication-flow. В default-authentication-flow переходим в Stage Bindings.

В настоящий момент наши этапы выглядят следующим образом

Список этапов Stage Bindings флоу default-authentication-flow

Теперь нам надо внести изменения в дефолтный этап default-authentication-mfa-validation. Дело в том, что он есть в списке этапов потока default-authentication-flow, но не настроен и не работает. Не беспокойтесь, мои юные зрители, сейчас мы это исправим.

В появившемся списке в разделе not configured action выбираем force the user to configure an authenticator. Тем самым мы принудительно заставим пользователя использовать двухфакторную аутентификацию. В появившемся меню configure stages выбираем TOTP Authenticator Setup Stage и жмем Update.

Настройка default-authentication-mfa-validation - TOTP Authenticator Setup Stage
Tip

Мое личное мнение, что у админа должно быть несколько вариантов двухфакторной аутентификации на случай отказа одного из вариантов.

Теперь выходим из нашего аккаунта (крайне желательно все делать в браузере в режиме инкогнито во избежание последующего удивления, почему ничего не работает). Заходим заново под нашей учетной записью, и после того как мы введем наш логин и пароль, нас поприветствует окно регистрации устройства с TOTP. Сканируем QR-код смартфоном в приложении для TOTP-кодов, вводим полученный шестизначный код. Все, устройство зарегистрировано. Теперь при каждом логине, после введения логина и пароля нам надо будет ввести 6-значный код из нашего приложения аутентификатора.

Регистрация TOTP-устройства при первом входе
Warning

6-значный код, который генерирует приложение на смартфоне, действует, как правило, 30 секунд. Поэтому крайне важно, чтобы время было точным и на смартфоне, и на сервере с Authentik - лучше всего с автоматической синхронизацией по NTP. Причем дело именно во времени, а не в часовом поясе: TOTP считается от универсального времени (UTC), так что разные часовые пояса на устройствах ему не мешают, а вот часы, убежавшие на минуту, - мешают. В противном случае при рассинхронизации устройств есть риск, что ваш код устареет до того, как вы попробуете ввести его в Authentik.

Настройка WebAuthn
#

WebAuthn (Web Authentication API) - это стандарт от W3C и FIDO Alliance, который позволяет входить в систему с помощью криптографических ключей, встроенных в устройство. Это отпечаток пальца, Windows Hello, Face ID и т.д.

На самом деле весь порядок действий абсолютно идентичен тому, что мы с вами делали с TOTP, кроме одного момента. Переходим в Flows and Stages > Flows > default-authentication-flow. В default-authentication-flow переходим в Stage Bindings, вносим изменения в дефолтный этап default-authentication-mfa-validation. К существующему TOTP добавляем WebAuthn Authenticator Setup Stage.

Добавление WebAuthn Authenticator Setup Stage к default-authentication-mfa-validation

В разделе not configured action оставляем force the user to configure an authenticator.

Выходим из-под аккаунта, и теперь, когда мы с вами попробуем зайти с нашего мобильного устройства или компа с помощью отпечатка пальца или лица, то у нас будет выбор: TOTP или WebAuthn. Обратите внимание, что если на вашем аккаунте уже зарегистрирован какой-то из вариантов “двухфакторки”, то у вас не будет списка, из которого нужно выбрать метод аутентификации, так как вы уже сделали выбор в пользу какого-то одного метода раньше. Поэтому если хотите добавить еще один вариант к уже существующему, то тут уже придется руками добавлять в настройках пользователя. Теперь, в следующий раз у вас уже будут варианты “двухфакторки” на выбор.

Passwordless Login
#

Как я указывал выше, на сайте есть статья, рассказывающая об особенностях passwordless login и почему не надо противопоставлять webauthn и passwordless login. Конкретно в нашем случае Passwordless login позволит нам не вводить логин и пароль, а потом сканировать отпечаток пальца или лицо, а сразу сканировать. Скан выступает как подтверждение и логина, и пароля.

Note

Для настройки passwordless login обязательно предварительно настроить WebAuthn метод входа.

Переходим в Flows and Stages > Flows > Create.

Создаем новый поток. Задаете имя потока, которое вы считаете подходящим. В качестве Designation выбираем Authentication и Create

Создание нового Flow для passwordless login

В разделе Flows кликаем на наш новый flow > Stage Bindings > Create and bind stage > Authenticator Validation Stage

Создание Authenticator Validation Stage для passwordless flow

Next. Опять задаем имя нашему этапу. В разделе Device Classes выбираем WebAuthn. Это нужно, потому что пока есть поддержка только ключей безопасности, типа Yubikey, или биометрии.

В разделе not configured action оставляем force the user to configure an authenticator.

Настройка Authenticator Validation Stage - Device Classes WebAuthn

Опускаемся немного вниз и в поле WebAuthn User verification выбираем тот вариант, который нужен именно вам. Я выбираю User verification must occur. В разделе Configuration Stages выбираем WebAuthn Authenticator Setup Stage.

Настройка WebAuthn User verification и Configuration Stages

Жмем Next и в следующем меню выбираем порядок исполнения этапа и evaluate when stage is run.

Привязка Authenticator Validation Stage - порядок и evaluate when stage is run

Это еще не все. Теперь нам надо привязать существующий этап входа в систему.

Bind existing stage, выбираем default-authentication-login и порядок выполнения этого этапа, который в обязательном порядке должен исполняться после созданного в этом разделе нового этапа. Обязательно выбираем evaluate when stage is run, затем Create

Привязка этапа default-authentication-login к passwordless flow

Переходим во Flows > default-authentication-flow > Stage Bindings > default-authentication-identification > Edit Stage. Идем в самый низ и в качестве Passwordless flow выбираем созданный поток, в моем случае passwordless-web-authn > Update.

Выбор Passwordless flow в default-authentication-identification

Выходим из приложения, теперь все зависит от того, за каким устройством вы сидите. Если за ноутбуком, то вам предложат вставить USB-ключ, спокойно жмете cancel и дальше выбираете тот метод, который вы предпочитаете. То же самое с мобильными устройствами. В любом случае у вас в окне входа в приложении появилась новая кнопка по использованию ключа.

Экран входа Authentik с кнопкой passwordless-входа по ключу
Tip

Начиная с Authentik 2025.12 есть и более простой вариант - passkey autofill. Браузер сам предлагает войти по ключу прямо в поле логина, без отдельной кнопки и без отдельного потока. Для этого в default-authentication-identification в поле WebAuthn Authenticator Validation Stage указывается этап проверки с разрешенным классом устройств WebAuthn. Условия: Authentik должен открываться по HTTPS (что за Traefik и так выполняется), браузер должен поддерживать эту функцию, а ключ - быть зарегистрирован как passkey (discoverable credential) на том же домене. Подробности - в документации Authentik.

Authentik - This article is part of a series.
Part : This Article

Related

Authentik - настройка Reputation Policy

··776 слов·4 минут· loading · loading
Пошаговая настройка Reputation Policy в Authentik для ограничения доступа по репутации IP-адреса и имени пользователя, с разбором типовых сценариев защиты.

Cloudflare Turnstile в Authentik - настройка защиты формы входа

··862 слов·5 минут· loading · loading
Подробное руководство по настройке Cloudflare Turnstile - современной альтернативы CAPTCHA для защиты форм входа, регистрации и восстановления пароля без ухудшения пользовательского опыта.