Skip to main content
Сервис web (модуль login-register) запрашивает reCAPTCHA v2 (невидимую) при входе по электронной почте, входе через LDAP, регистрации и сбросе пароля. Как создать ключ и что делает каждая настройка, описано в разделе reCAPTCHA; на этой странице показано, как перенести это в Kubernetes.

Настройка

1

Ключ сайта — в ConfigMap

Ключ сайта публичный: его показывает каждая страница входа.
2

Секретный ключ и ключ истории устройств — в Secret

Задавайте оба ключа вместе: если есть ключ сайта, но нет секретного ключа, каждая проверка завершается неудачей, и никто не сможет войти с паролем, зарегистрироваться или сбросить пароль. DEVICE_HISTORY_SECRET должен состоять из 64 шестнадцатеричных символов; контейнер не генерирует его.
3

Примените изменения и перезапустите

Затем проверьте, что каждый под может обратиться к эндпоинту. Поды прекращают попытку примерно через одну секунду на каждую попытку соединения, и вход, проверку для которого выполнить не удалось, завершается ошибкой:

Несколько реплик

Все реплики должны использовать общий DEVICE_HISTORY_SECRET, что выполняется, если он хранится в Secret. При разных значениях браузер, прошедший проверку на одной реплике, снова получит капчу на другой. Ограничения частоты запросов подсчитываются в Redis по всем репликам.

Проверено на Kubernetes

С имитацией эндпоинта проверки Google (доверие к которой обеспечено через NODE_EXTRA_CA_CERTS из overleaf-certs), на Kubernetes 1.37, наши сквозные тесты для reCAPTCHA проходят (13 сценариев): на одной реплике — вход, регистрация и сброс пароля, каждый из которых отклоняется без капчи или с непройденной капчей и принимается с пройденной, история устройств на основе DEVICE_HISTORY_SECRET, позволяющая браузеру пропустить капчу, и CAPTCHA_TRUSTED_USERS; на трёх репликах за HAProxy — вход через LDAP с капчей.
Последнее изменение 2 ноября 2026 г.