Настройка ntfy
Первым делом создаем отдельного пользователя для Authentik и генерируем токен для авторизации:
|
|
ntfy выведет токен в виде tk_*****, который понадобится в дальнейшем.
Для уведомлений будем использовать тему ntfy с названием auth. Добавляем нашему пользователю права на запись в эту тему:
|
|
Настройка Authentik
Переходим в интерфейс администратора и в разделе Events -> Notification Transports, создаем новый транспорт:
- Name: ntfy
- Send once: включено
- Mode: Webhook (generic)
- Webhook URL: см. ниже
- Webhook Body Mapping: пока оставляем пустым, заполним позже
- Webhook Header Mapping: пусто
Webhook URL
Для примера будем использовать https://ntfy.example.com как адрес ntfy. Тогда в Webhook URL пишем: https://ntfy.example.com?auth=. После auth= нужно дописать токен ntfy, закодированный в base64, но без символов =. Готовим токен командой:
|
|
и добавляем в URL.
Обратите внимание: в URL тема ntfy не указывается.
Webhook Body Mapping
Здесь придётся использовать немного магии: с помощью кода на Python, сформируем JSON, который будет отправляться в ntfy.
Создаем новый Property Mapping в разделе Customization -> Property Mappings:
- Type: Webhook Mapping
- Name: ntfy
- Expression: пишем следующий код:
|
|
Не забудьте поменять название темы ntfy в переменной topic. В примере указана тема auth.
Если планируете добавить обработку других типов событий, поля структуры
notification.eventможно подсмотреть в логах Authentik, раздел Events -> Logs. Выберете нужное событие и в столбце Actions нажмите кнопку Show details.
Возвращаемся в Events -> Notification Transports, редактируем транспорт ntfy и выбираем только что созданный Property Mapping (ntfy) в поле Webhook Body Mapping.
Осталось указать, при каких событиях посылать уведомления.
Notification Rules
Переходим в раздел Events -> Notification Rules и создаем новое правило:
- Name: ntfy notifications
- Group: authentik Admins
- Transports: добавляем ntfy в столбец Selected Transports
- Severity: любая (для ntfy приоритет уведомления определяется в Python коде)
Нажимаем Create.
Теперь укажем политики, при которых будет срабатывать наше правило. Раскрываем ntfy notifications и нажимаем Create and bind Policy:
- Type: Event Matcher Policy
- Name: любое имя
- Action: выбираем тип события (например, Login Failed срабатывает при неудачных попытках входа)
- Остальные поля не трогаем
Созданные политики можно посмотреть и отредактировать в разделе Customization -> Policies.
На этом - всё. Подпишитесь на выбранную тему в ntfy, если ещё этого не сделали, и попробуйте ввести неправильный пароль при входе в Authentik. Подписчикам темы придет уведомление о неудачной попытке входа.
Полезные ссылки
- Authentik - Event actions - возможные значения переменной
notification.event.actionс пояснениями - ntfy - Publish as JSON - структура JSON, используемая ntfy