Перейти к содержимому

OIDC-аутентификация

DashLit поддерживает вход через OpenID Connect, например с помощью Pocket ID. Парольный вход можно оставить как запасной вариант или отключить после проверки OIDC.

Настройка провайдера

Создайте OIDC-клиент и укажите callback:

text
https://dash.example.com/api/auth/oidc/callback

Передайте DashLit issuer, client ID, client secret и совпадающий redirect URL:

dotenv
OIDC_ISSUER=https://id.example.com
OIDC_CLIENT_ID=dashlit
OIDC_CLIENT_SECRET=provider-issued-secret
OIDC_REDIRECT_URL=https://dash.example.com/api/auth/oidc/callback
OIDC_BUTTON_TITLE=Войти через Pocket ID

Перезапустите контейнер и проверьте вход через OIDC до отключения пароля.

Самоподписанные сертификаты

Предпочтительный вариант для локального OIDC-провайдера — сертификат от центра сертификации, которому доверяет хост или контейнер DashLit. Если настроить доверие к CA невозможно, проверку TLS-сертификата можно отключить явно:

dotenv
OIDC_INSECURE_SKIP_TLS_VERIFY=true

Параметр действует на discovery, обмен authorization code и загрузку ключей подписи. Соединение становится уязвимым для подмены сервера, поэтому оставляйте значение false в публичных и недоверенных сетях. При включении DashLit записывает предупреждение в лог.

Создание пользователей

При DISABLE_OIDC_REGISTRATION=false неизвестный OIDC-профиль создаёт пользователя DashLit. Если база пуста, этот пользователь становится первым администратором, как и при обычной регистрации.

Установите DISABLE_OIDC_REGISTRATION=true, если пользователей необходимо заранее создавать в DashLit.

Связывание аккаунтов

По умолчанию входящий OIDC-профиль связывается с парольным аккаунтом с таким же нормализованным именем. Существующий аккаунт сохраняет пароль и получает возможность входа через OIDC.

DISABLE_OIDC_USER_MERGE=true запрещает автоматическое связывание. При конфликте новый пользователь получает числовой суффикс, например alex-2.

Отключение пароля

После успешной проверки OIDC задайте:

dotenv
DISABLE_PASSWORD_LOGIN=true

Параметр применяется только при полной конфигурации OIDC. Если issuer или client ID отсутствует, парольный вход сохраняется как способ восстановления.

Устранение проблем

  • Проверьте точность issuer URL и его доступность из контейнера.
  • Убедитесь, что callback у провайдера полностью совпадает с OIDC_REDIRECT_URL.
  • Передавайте исходный хост и протокол через обратный прокси.
  • Синхронизируйте системные часы сервера: проверка токенов зависит от времени.
  • Не отключайте пароль до успешной проверки полного redirect flow.
  • Для самоподписанного сертификата предпочтительно установить его CA; используйте OIDC_INSECURE_SKIP_TLS_VERIFY=true только в доверенной локальной сети.

Распространяется по лицензии MIT.