Files
gooseek/apps/auth-mcs
home 783569b8e7 feat: монорепо миграция, Discover/SearxNG улучшения
- Миграция на монорепозиторий (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>
2026-02-20 17:03:45 +03:00
..

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