Обновление от 10.10.2026: в России этот способ больше не работает. Виджет Turnstile загружается с серверов Cloudflare (challenges.cloudflare.com), а доступ к ним у российских провайдеров ограничен. У пользователя из России виджет просто не появляется, проверку пройти невозможно - и форма входа дальше не пускает. То есть вместо защиты от ботов вы получите закрытый вход для самих себя. Если ваши пользователи (или вы сами) заходят в Authentik из России, включать Turnstile не стоит. Что можно использовать вместо него:
- Reputation Policy - встроенная защита от подбора пароля, никуда наружу не ходит;
- Cap - CAPTCHA, которую можно развернуть на своем сервере; Authentik поддерживает ее в том же
Captcha Stage(см. документацию).
Статья остается актуальной для тех, у кого пользователи находятся за пределами России.
Предполагаю, что Authentik у вас уже установлен и настроен (см. статью про первоначальную настройку, а также про OIDC, OAuth2 и Proxy Provider, если защищаете стороннее приложение). Cloudflare Turnstile - это современная альтернатива CAPTCHA, которая позволяет защищать формы аутентификации от ботов и атак перебора, не заставляя пользователей разгадывать картинки или вводить символы.
Если вам понравилась эта статья, вы можете стать спонсором на Boosty.
Cloudflare Turnstile это аналог технологии Captcha, но для пользователей Cloudflare. Если вам нужно настроить именно Captcha, - более подробно можете ознакомиться с настройкой на странице официальной документации
С 1 июля 2025 года в России вступили в силу изменения в законодательстве о персональных данных (ФЗ №152), согласно которым использование Google reCAPTCHA или их аналогов на сайтах, передающих данные за границу, становится нарушением. Необходимо учитывать это ограничение, если вы собираетесь использовать данный сервис в предпринимательской деятельности.
Зачем использовать Cloudflare Turnstile в Authentik#
По умолчанию Authentik уже обладает неплохой защитой от:
- brute-force атак;
- username enumeration;
- автоматических попыток входа.
Однако при публикации IdP в интернет этого часто бывает недостаточно.
Cloudflare Turnstile позволяет:
- отсекать ботов еще до ввода пароля;
- снизить нагрузку на Authentik;
- улучшить пользовательский опыт по сравнению с классическими CAPTCHA;
- повысить общий уровень безопасности без усложнения логики flows.
То есть кроме тех способов аутентификации и авторизации, которые мы с вами уже настроили в предыдущих статьях, добавляется еще один способ проверки.
Визуально это выглядит как-то так

Требования#
Перед началом убедитесь, что у вас есть аккаунт в Cloudflare - бесплатного достаточно.
Сам домен, на котором доступен Authentik, переносить в Cloudflare не обязательно: Turnstile работает на любом сайте, имя домена просто указывается при создании виджета. Исключение - режим Pre-Clearance, о нем ниже.
Создание Turnstile в Cloudflare#
- Перейдите в панель Cloudflare.
- Откройте раздел Security > Turnstile (Cloudflare периодически переносит пункты меню между разделами - на момент написания статьи это было “Protect & Connect”, сейчас переехало в “Security”. Если снова не найдете - ищите просто “Turnstile” через поиск в дашборде).
- Нажмите Add Widget (в части версий интерфейса кнопка уже называется Add site).
- Укажите:
- Widget name - произвольное имя (например
authentik-login); - Add Hostname > Domains - домен, на котором работает Authentik;
- Widget mode - Managed (рекомендуется для дома).
- Pre-Clearance Mode - Yes
- Level of pre-clearance - interactive
- Widget name - произвольное имя (например
Последние два пункта меняйте так, как вы считаете нужным, в зависимости от ваших потребностей и паранойи. Pre-Clearance имеет смысл только тогда, когда сам домен обслуживается Cloudflare и там же настроены правила защиты. Если домен у вас не в Cloudflare - ставьте No.

После создания вы получите:
- Site Key
- Secret Key
Можете их скопировать, но Cloudflare заботливо указывает, что вы всегда сможете повторно получить к ним доступ.

Создание Captcha Stage в Authentik#
Настройка этапа в Authentik#
Теперь переходим к настройке в Authentik.
- Откройте админ-панель Authentik.
- Перейдите в Flows and Stages → Stages.
- Нажмите Create.
- Выберите Captcha Stage.

- Задайте имя этапу.
- В типе проверки выберите Cloudflare Turnstile.
- В разделе
Public keyиPrivate Keyукажите значения, которые мы получили у Cloudflare. - Галку
Interactiveможно оставить включенной, если Turnstile у вас сконфигурирован какInvisibleилиManaged.
В разделе Advanced Settings ничего не трогаем. В актуальной на дату написания статьи версии Authentik корректные значения уже автоматом прописаны. Раньше нужно было их вставлять руками. Более подробно можно ознакомиться на сайте с официальной документацией

- Finish
Интеграция этапа Turnstile в основной поток аутентификации и авторизации#
- Откройте админ-панель
Authentik. - Перейдите в Flows and Stages → Flows → default-authentication-flow.
- Выберите Stage Bindings → Bind Existing Stage
- Выбираем вновь созданный этап.
- Выбираем порядок обработки этапа Turnstile - после этапа идентификации (ввода логина), но до этапа ввода пароля.
- Выберите
evaluate when flow is planned. - Create

Теперь мы интегрировали этап “капчи” при аутентификации в Authentik.

В таком виде капча показывается всем пользователям при каждом входе. Если хочется показывать ее только подозрительным - например, после нескольких неудачных попыток входа с одного IP, - привяжите к этому этапу Reputation Policy (без Negate the result) и переключите привязку этапа на evaluate when stage is run. Как работает такая политика, я разбирал в статье Authentik - настройка Reputation Policy.
Проверяйте вход в отдельном окне инкогнито, не закрывая сессию администратора. Если виджет не загрузится, из формы входа вы уже не попадете в админку, чтобы отключить этап. На такой случай есть аварийный вход: команда docker exec authentik_server ak create_recovery_key 10 <имя_администратора> выдаст ссылку, которая действует 10 минут и впускает под указанным пользователем в обход формы входа. После этого этап Turnstile можно отвязать от потока.
В панели Turnstile на сайте Cloudflare вы сможете посмотреть аналитику по работе этого виджета







