Kimlik Doğrulama & SSO
Kullanıcılar nivq'ya nasıl giriş yapar — sosyal giriş, genel OIDC (Keycloak/Okta/Azure AD), workspace bazlı SSO, yerel bootstrap admin ve IdP gruplarını workspace ile role eşleme.
nivq kendi OAuth2 Authorization Server'ıdır. Kullanıcı hangi kimlik sağlayıcısıyla doğrulanırsa doğrulansın, nivq sonrasında kendi JWT'sini üretir — böylece API, çok-kiracılı izolasyon ve workspace claim'leri her giriş yönteminde aynı şekilde çalışır. IdP'nin token'ı asla geçirilmez.
Giriş sayfası uyarlanabilirdir: yalnızca kurulumda gerçekten yapılandırılmış
yöntemleri gösterir (GET /v1/auth/providers'tan alınır). Bu uç noktaya erişilemezse,
giriş çıkmaza girmesin diye sosyal butonlara geri döner.
Giriş yöntemleri — özet
| Yöntem | Ne zaman görünür | Nereden ayarlanır |
|---|---|---|
| Bootstrap admin (yerel parola) | NIVQ_BOOTSTRAP_ADMIN_USERNAME + _PASSWORD set | env |
| Google / Microsoft / GitHub | ilgili *_CLIENT_ID / *_CLIENT_SECRET set | env |
| Genel OIDC (Keycloak, Okta, Auth0, Azure AD, …) | OIDC_ISSUER_URI + OIDC_CLIENT_ID + OIDC_CLIENT_SECRET set | env |
| Kurumsal SSO (e-posta → workspace bazlı IdP) | en az bir etkin workspace SSO yapılandırması var | uygulama arayüzü |
Tüm env anahtarları Yapılandırma → Kimlik bölümünde listelenir. Bu rehber her yöntemin nasıl çalıştığını ve kullanıcıların doğru workspace'e doğru rolle nasıl ulaştığını anlatır.
Bootstrap admin (yerel giriş)
IdP kuramayan on-prem demo / deneme kurulumları için nivq tek bir yerel kullanıcı adı/parola hesabı sunabilir:
NIVQ_BOOTSTRAP_ADMIN_USERNAME=admin@example.com # e-posta olmalı
NIVQ_BOOTSTRAP_ADMIN_PASSWORD=uzun-bir-parolaİkisi de verildiğinde giriş sayfasında bir e-posta/parola formu görünür. Gönderildiğinde
kimlik bilgileri Authorization Server'a iletilir (POST /login/password); bir oturum
kurulur ve OIDC akışıyla aynı JWT üretilir. Parola yalnızca bellekte BCrypt ile
hash'lenir ve veritabanına asla yazılmaz (kullanıcı kaydında parola kolonu yoktur).
Kullanıcı adı olmadan verilen bir parola başlangıçta uygulamayı durdurur; 12 karakterden
kısa bir parola engellemez ama açılışta uyarı loglar — uzun bir parola cümlesi kullanın.
Acil-durum (break-glass) hesabı olarak kullanın
Bootstrap admin'i ilk kurulum / acil-durum girişi olarak görün: nivq'yu ayağa kaldırın, giriş yapın, gerçek IdP'nizi yapılandırın, ardından iki değişkeni temizleyin (ya da IdP kesintileri için güvenle saklayın). Normal üretimde boş bırakın.
Sosyal sağlayıcılar
Google, Microsoft veya GitHub'dan herhangi birinin kimlik bilgilerini verin; o buton
görünür. Microsoft ayrıca MICROSOFT_TENANT alır. Yapılandırılmamış sağlayıcılar
(placeholder'da bırakılanlar) elenir ve hiç gösterilmez.
Genel OIDC (Keycloak, Okta, Auth0, Azure AD …)
Tüm kurulum için tek bir kurumsal IdP istiyorsanız nivq'yu issuer'a yönlendirin:
OIDC_ISSUER_URI=https://keycloak.company.com/realms/company
OIDC_CLIENT_ID=nivq
OIDC_CLIENT_SECRET=...
OIDC_DISPLAY_NAME=Kurumsal SSOUç noktalar (authorization, token, JWKS) {issuer}/.well-known/openid-configuration'dan
otomatik keşfedilir. IdP'nizde şu redirect URI'yi kaydedin:
{BACKEND_URL}/login/oauth2/code/oidcOIDC uyumlu her sağlayıcı kod değişikliği olmadan çalışır.
Workspace bazlı SSO (e-posta domain'i → IdP)
nivq ayrıca e-posta domain'ine göre workspace bazlı SSO destekler — farklı kiracıların kendi IdP'sini getirdiği durumlar için kullanışlıdır. Bir workspace sahibi bunu Workspace Ayarları → SSO'dan yapılandırır:
emailDomain— örn.acme.comissuerUri— kiracının OIDC issuer'ı (discovery tabanlı)clientId/clientSecret— beklemede şifreli (AES-256-GCM)
Giriş sayfasında kullanıcı kurumsal e-postasını girer; domain'inin etkin bir yapılandırması varsa o kiracının IdP'sine yönlendirilir. Aynı domain bir workspace'e bağlanarak tüm üyelerinin oraya düşmesi sağlanabilir (aşağıdaki rol eşlemesine bakın).
Enterprise SSO özelliği gerekir
Workspace bazlı SSO ve grup eşlemeleri ENTERPRISE_SSO plan özelliğine
bağlıdır. Genel OIDC butonu ve sosyal giriş bağlı değildir.
Roller & otomatik katılım
nivq rolleri workspace bazlıdır: OWNER > ADMIN > MEMBER. Federe bir kullanıcı
birden çok workspace'in üyesi olabilir, her birinde farklı rolle, ve uygulamada aralarında
geçiş yapar. İki mekanizma kullanıcıları otomatik yerleştirir.
IdP grubu → rol (domain auto-join)
Bir kullanıcının e-posta domain'i etkin bir workspace SSO yapılandırmasıyla eşleştiğinde, kullanıcı IdP grup claim'inden türetilen rolle o workspace'e otomatik katılır:
NIVQ_OIDC_GROUPS_CLAIM=groups # grup adlarını taşıyan claim
NIVQ_OIDC_DEFAULT_ROLE=MEMBER # hiçbir grup eşleşmezse rol
NIVQ_OIDC_OWNER_GROUPS=nivq-owners
NIVQ_OIDC_ADMIN_GROUPS=nivq-admins
NIVQ_OIDC_MEMBER_GROUPS=nivq-usersÖncelik OWNER > ADMIN > MEMBER. Rol her girişte yeniden senkronlanır, böylece IdP grup
değişiklikleri yansır. Workspace sahibinin kendi üyeliği eşleme tarafından asla
değiştirilmez. Eşleştirme büyük/küçük harf duyarsızdır ve Keycloak path-style gruplarına
toleranslıdır (/nivq-admins, nivq-admins ile eşleşir).
IdP grubu → workspace (arayüzden yönetilen)
Tek bir IdP'den kullanıcıları gruba göre farklı — ve birden çok — workspace'e yönlendirmek için her workspace sahibi kuralları Workspace Ayarları → SSO grup eşlemeleri'nden tanımlar:
| IdP grubu | Bu workspace'teki rol |
|---|---|
nivq-sales-admin | ADMIN |
nivq-eng | MEMBER |
Girişte kullanıcı, gruplarından biriyle eşleşen her workspace'e eşlenen rolle katılır. İki eşleşen grubu olan kullanıcı iki workspace'e katılır. Aynı workspace'e birden çok kural isabet ederse en yüksek rol kazanır. Eşlemeler mevcut workspace'leri hedefler (asla otomatik oluşturulmaz) ve workspace bazında saklanır (bir kiracının kuralları diğerini etkilemez).
LDAP / Active Directory
nivq doğrudan LDAP/AD'ye bağlanmaz — tasarım gereği hiçbir dizin kimlik bilgisi platforma ulaşmaz. Standart desen, bir IdP üzerinden köprü kurmaktır:
NivQ ──(OIDC)──> Keycloak ──(LDAP/AD federation)──> Active Directory / OpenLDAPKeycloak (veya AD FS / Entra ID) dizini federe eder ve OIDC sunar; nivq yukarıdaki genel OIDC slotuyla bağlanır. Dizin grupları da rol/workspace eşlemelerini sürer.
Önerilen on-prem kurulum
- nivq'yu başlatın ve bootstrap admin ile giriş yapın.
- IdP'nizi yapılandırın — tek kurumsal IdP için genel OIDC slotu, çok-kiracılı için workspace bazlı SSO.
- Ekiplerinizin ihtiyaç duyduğu workspace'leri oluşturun.
- Grup → rol (env) ve/veya grup → workspace (arayüz) eşlemelerini ekleyin.
- Kullanıcılar IdP üzerinden giriş yapar ve doğru workspace(ler)e doğru rolle düşer.
- SSO doğrulandıktan sonra isteğe bağlı olarak bootstrap admin değişkenlerini temizleyin.
Sonuç
Tek IdP girişi, dizin-temelli üyelik: her kullanıcı, gruplarının verdiği workspace'leri, gruplarının verdiği rolle otomatik görür — elle davet gerekmez.