- Миграция на монорепозиторий (apps/frontend, apps/chat-service, etc.) - Discover: проверка SearxNG, понятное empty state при ненастроенном поиске - searxng.ts: валидация URL, проверка JSON-ответа, авто-добавление http:// - docker/searxng-config: настройки для JSON API SearxNG Co-authored-by: Cursor <cursoragent@cursor.com>
Auth Microservice — Identity Provider
Отдельный микросервис аутентификации с поддержкой SSO, LDAP и OIDC. Выступает как единый Identity Provider для регистрации и входа во все приложения вашего ландшафта.
Возможности
- Email/пароль — регистрация и вход
- LDAP / Active Directory — вход через корпоративный каталог
- SSO — вход через внешние IdP (Okta, Google, Azure AD, Keycloak и др.)
- OIDC Provider — этот сервис выступает как IdP для других приложений (Perplexica и др.)
Быстрый старт
Локально
cd auth-microservice
cp .env.example .env
# Отредактируйте .env: BETTER_AUTH_SECRET, BETTER_AUTH_URL
npm install
npm run db:migrate # Создание таблиц БД
npm run dev
Сервис доступен по адресу: http://localhost:3001
Docker
docker compose up -d
Конфигурация
Обязательные переменные
| Переменная | Описание |
|---|---|
BETTER_AUTH_SECRET |
Секрет для шифрования (минимум 32 символа). Сгенерируйте: openssl rand -base64 32 |
BETTER_AUTH_URL |
Публичный URL сервиса (например https://auth.example.com) |
LDAP (опционально)
Если заданы переменные LDAP, включается вход через Active Directory / OpenLDAP:
| Переменная | Описание |
|---|---|
LDAP_URL |
URL LDAP-сервера (ldap:// или ldaps://) |
LDAP_BIND_DN |
DN для bind (admin) |
LDAP_PASSWORD |
Пароль для bind |
LDAP_BASE_DN |
Базовый DN для поиска пользователей |
LDAP_USERNAME_ATTR |
Атрибут логина (по умолчанию uid) |
NEXT_PUBLIC_LDAP_ENABLED |
true — показать вкладку LDAP на форме входа |
Trusted OAuth Clients
Приложения, которые могут использовать этот IdP. Задаётся через TRUSTED_CLIENTS (JSON-массив) или DEFAULT_CLIENT_ID / DEFAULT_CLIENT_SECRET.
Интеграция приложений
OIDC Endpoints
Authorization: {BETTER_AUTH_URL}/api/auth/oauth2/authorize
Token: {BETTER_AUTH_URL}/api/auth/oauth2/token
UserInfo: {BETTER_AUTH_URL}/api/auth/oauth2/userinfo
Discovery: {BETTER_AUTH_URL}/api/auth/.well-known/openid-configuration
Регистрация клиента
Через API (требуется сессия администратора):
POST /api/auth/oauth2/register
Content-Type: application/json
{
"redirect_uris": ["https://myapp.com/callback"],
"client_name": "My Application",
"scope": "openid profile email"
}
Подключение Perplexica
В Perplexica настройте Better Auth как OIDC провайдер:
// В Perplexica
baseURL: "http://localhost:3001"
// или URL вашего auth-microservice
И укажите redirect URL Perplexica в TRUSTED_CLIENTS auth-сервиса.
SSO (вход через внешние IdP)
Чтобы пользователи могли входить через Okta, Google и т.п., зарегистрируйте SSO провайдера:
await authClient.sso.register({
providerId: "okta",
issuer: "https://your-tenant.okta.com",
domain: "company.com",
oidcConfig: {
clientId: "...",
clientSecret: "...",
}
});
Структура проекта
auth-microservice/
├── src/
│ ├── lib/
│ │ ├── auth.ts # Конфигурация Better Auth
│ │ ├── auth-client.ts # Клиент для React
│ │ └── db.ts # SQLite
│ └── app/
│ ├── api/auth/ # API Better Auth
│ ├── sign-in/ # Страница входа
│ ├── sign-up/ # Регистрация
│ └── dashboard/ # Личный кабинет
├── data/ # SQLite (создаётся автоматически)
├── .env.example
├── Dockerfile
└── docker-compose.yaml
Лицензия
MIT