# Identity & Access Service سرویس احراز هویت و دسترسی (فاز ۲) — SSO مرکزی با Keycloak. ## مسئولیت‌ها - مدیریت پروفایل کاربر و عضویت tenant - ارائه پیکربندی OIDC به frontend - تبدیل authorization code به token (BFF) - همگام‌سازی کاربران با Keycloak Admin API ## دیتابیس `identity_access_db` (مستقل از Core — database-per-service) ## APIهای اصلی | متد | مسیر | توضیح | | --- | --- | --- | | GET | `/health` | سلامت سرویس | | GET | `/api/v1/auth/config` | پیکربندی OIDC (عمومی) | | POST | `/api/v1/auth/token` | تبدیل code به token | | GET | `/api/v1/auth/me` | کاربر جاری | | POST | `/api/v1/users` | ثبت کاربر (admin) | | POST | `/api/v1/tenants/{id}/members` | افزودن عضو tenant | ## اجرا ```bash cd backend/services/identity-access pip install -r requirements.txt alembic upgrade head uvicorn app.main:app --reload --port 8001 ``` ## تست ```bash pytest -q ``` ## SSO Flow 1. Frontend از `/api/v1/auth/config` آدرس Keycloak را می‌گیرد. 2. کاربر به Keycloak redirect می‌شود. 3. پس از login، callback با `code` به frontend برمی‌گردد. 4. Frontend کد را به `/api/v1/auth/token` می‌فرستد و token دریافت می‌کند. 5. همه سرویس‌ها (Core، CRM، ...) همان JWT را validate می‌کنند.