Bu sayfa Cluster ERP API'sinin okuduğu ve yazdığı kimlik bilgilerini ve HTTP başlıklarını, bir istemci geliştiricisinin API'yi çağırmak için ihtiyaç duyduğu düzeyde listeler. Kiracı kullanıcılarını, operatör konsolunu ve belirteçle çalışan tedarikçi portalı ile kayıt yollarını kapsar. Oturum ve belirteç tasarımı Kimlik doğrulama ve oturumlar sayfasında anlatılır; bu sayfa onu tekrarlamaz ve iç denetimleri sonuçlarının ötesinde anlatmaz.
Kimlik bilgileri¶
| Kimlik bilgisi | Taşındığı yer | Kullanan | Kaynak |
|---|---|---|---|
| Erişim belirteci | Authorization: Bearer başlığı |
masaüstü istemci ve betikler; get_current_user veya require_permission bağımlılığına dayanan her yol |
src/cluster_erp/modules/auth/session_cookies.py:63-75 |
| Erişim çerezi | HttpOnly cluster_access çerezi, TLS üzerinde __Host- önekiyle |
çerez taşımalı oturum açmadan sonra web istemcisi | src/cluster_erp/modules/auth/session_cookies.py:35, src/cluster_erp/modules/auth/session_cookies.py:51-55 |
| Yenileme belirteci | POST /api/v1/auth/refresh JSON gövdesi |
masaüstü istemci ve betikler | src/cluster_erp/modules/auth/login/schemas.py:41-44 |
| Yenileme çerezi | HttpOnly cluster_refresh çerezi, yol /api/v1/auth |
web istemcisi | src/cluster_erp/modules/auth/session_cookies.py:36-39, src/cluster_erp/modules/auth/session_cookies.py:145-153 |
| Operatör belirteci | /api/v1/vendor/* üzerinde Authorization: Bearer başlığı |
operatör konsolu; kiracı belirteçlerinden ayrı | src/cluster_erp/server/routes/vendor.py:84-95 |
| Portal belirteci | {token} yol bölümü |
/api/v1/procurement/portal/rfqs/ altındaki tedarikçi portalı yolları |
src/cluster_erp/modules/procurement/purchase_rfqs/portal_routes.py:34-64 |
| Kayıt belirteci | signup_token veya verify_token JSON gövde alanı |
kayıt durumu, yeniden gönderme, iptal ve doğrulama | src/cluster_erp/server/routes/signup.py:102-112 |
Biçimi doğru bir Bearer başlığı erişim çerezinin önüne geçer; null veya undefined değerli bir Bearer yok sayılır (src/cluster_erp/modules/auth/session_cookies.py:63-75).
Oturum açma ve belirteç yenileme¶
Sıra, kiracı kullanıcısı akışını mekanizma düzeyinde gösterir. Web istemcisi çerez taşımasını ister; masaüstü istemci ve betikler gövde taşımasını kullanır.
sequenceDiagram participant Client participant Login as POST /auth/login participant Refresh as POST /auth/refresh participant Route as Korunan yol Client->>Login: LoginRequest, isteğe bağlı X-Token-Transport cookie Login-->>Client: belirteçli LoginResponse ya da boş belirteçler ve Set-Cookie Client->>Route: Bearer başlığı veya erişim çerezi Route-->>Client: 200 veya 401 AUTH_TOKEN_EXPIRED Client->>Refresh: gövdede yenileme belirteci veya yenileme çerezi Refresh-->>Client: yeni erişim ve yenileme belirteci çifti Client->>Route: yeni erişim belirteciyle yeniden dene
| Adım | Davranış | Kaynak |
|---|---|---|
| Oturum açma isteği | LoginRequest, username, password ve remember_me taşır. |
src/cluster_erp/modules/auth/login/schemas.py:8-13 |
| Başarısız oturum açma | AUTH_INVALID_CREDENTIALS ile 401 yanıtlar. Tekrarlanan başarısızlıklar hesabı bir süre kilitler; istemci başına deneme bütçesi AUTH_TOO_MANY_ATTEMPTS ile 429 yanıtlar. |
src/cluster_erp/modules/auth/login/routes.py:71-97, src/cluster_erp/modules/auth/login/routes.py:136-180 |
| Oturum açma yanıtı | LoginResponse, access_token, refresh_token, token_type, user ve permissions taşır. Çerez taşımasında iki belirteç alanı boş dizgedir ve belirteçler çerez olarak yazılır. |
src/cluster_erp/modules/auth/login/schemas.py:16-21, src/cluster_erp/modules/auth/login/routes.py:214-257 |
| Oturum süresi | remember_me olmadan çerez taşımalı bir oturum, oturum çerezleri ve jwt_session_hours uzunluğunda bir oturum sonu alır. |
src/cluster_erp/modules/auth/login/routes.py:219-226, src/cluster_erp/modules/auth/session_cookies.py:124-153 |
| Yenileme | Sunulan yenileme belirteci harcanır ve yeni bir çift verilir; yanıt isteğin taşıma biçimini izler. | src/cluster_erp/modules/auth/login/routes.py:260-370 |
| Oturum kapatma | POST /api/v1/auth/logout sunulan belirteçleri iptal eder, last_logout_at damgasını basar, çerezleri temizler ve 204 yanıtlar. |
src/cluster_erp/modules/auth/login/routes.py:373-432 |
| Geçerli kullanıcı | GET /api/v1/auth/me, user ve permissions ile MeResponse döndürür. |
src/cluster_erp/modules/auth/login/routes.py:434-459 |
Belirteç ömürleri jwt_access_expire_minutes, jwt_refresh_expire_days ve jwt_session_hours ayarlarından gelir (src/cluster_erp/config/settings.py:307-312). Değerler Ayarlar başvurusu sayfasında anlatılır.
İstek başlıkları¶
| Başlık | Amaç | Ne zaman gerekir | Kaynak |
|---|---|---|---|
Authorization |
Bearer erişim belirteci veya /api/v1/vendor/* üzerinde operatör belirteci |
erişim çerezi gönderilmediğinde her korunan yol | src/cluster_erp/modules/auth/session_cookies.py:63-75 |
Cookie |
web istemcisinin erişim ve yenileme çerezleri | çerez taşıması | src/cluster_erp/modules/auth/session_cookies.py:63-84 |
X-Token-Transport |
cookie değeri, oturum açmanın belirteç döndürmek yerine çerez yazmasını ister |
tarayıcıdan oturum açma | src/cluster_erp/modules/auth/session_cookies.py:31-43 |
X-Requested-With |
yöntemi GET, HEAD veya OPTIONS olmayan her çerezle doğrulanmış istekte CSRF_VALUE değerine eşit olmalıdır; aksi halde 403 AUTH_CSRF_HEADER_MISSING |
çerez taşımalı yazmalar ve yenileme | src/cluster_erp/modules/auth/session_cookies.py:33-34, src/cluster_erp/modules/auth/session_cookies.py:112-121 |
X-Tenant-Domain |
oturum açma posta alan adı; imzalı bir belirteç kiracı talebi taşımadığında isteği kiracısına yönlendirmek için kullanılır | çoklu kiracı kipi, oturum açmadan önce | src/cluster_erp/server/dependencies.py:138-148 |
Accept-Language |
ilk iki harf etiket metinlerinin dilini seçer; varsayılan en |
isteğe bağlı; get_language bağımlılığının 49 kullanımı okur |
src/cluster_erp/server/dependencies.py:247-249 |
X-Deact-Reason, X-Deact-Note |
bir DELETE isteğinin kullanımdan kaldırdığı kayda basılan, URL kodlu neden ve not |
kullanımdan kaldırma isteklerinde isteğe bağlı | src/cluster_erp/server/dependencies.py:63-72 |
X-Session-Id, X-Correlation-Id |
denetim için veritabanı oturum ayarlarına yazılır; bağıntı kimliği yoksa üretilir | isteğe bağlı | src/cluster_erp/server/dependencies.py:34-63 |
If-None-Match |
GET /api/v1/_meta yeniden doğrulaması; eşleşme 304 yanıtlar |
isteğe bağlı | src/cluster_erp/server/app.py:1553-1555 |
Accept-Encoding |
gzip, önceden sıkıştırılmış meta veri gövdesini seçer |
isteğe bağlı | src/cluster_erp/server/app.py:1544-1552 |
Content-Length |
max_request_body_bytes ile karşılaştırılır; daha büyük değer 413 yanıtlar |
gövdeli her istek | src/cluster_erp/server/app.py:1396-1411 |
Origin |
çapraz köken erişimi yalnız yapılandırılmış konsol kökenlerine ve yalnız /api/v1/vendor/fleet üzerinde verilir |
tarayıcıdaki operatör konsolu | src/cluster_erp/server/app.py:1362-1388 |
Yanıt başlıkları¶
| Başlık | Ne zaman | Kaynak |
|---|---|---|
Set-Cookie |
çerez taşımalı oturum açma ve yenileme; oturum kapatmada silme | src/cluster_erp/modules/auth/session_cookies.py:124-158 |
ETag, Cache-Control: private, no-cache, Vary |
GET /api/v1/_meta |
src/cluster_erp/server/app.py:1546-1556 |
Content-Security-Policy, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy |
her yanıt | src/cluster_erp/server/app.py:1412-1421 |
Strict-Transport-Security |
HTTPS isteklerine verilen yanıtlar | src/cluster_erp/server/app.py:1426-1429 |
Retry-After: 2 |
durumu 503 olan işlenmemiş hata yanıtı |
src/cluster_erp/server/error_handler.py:309 |
Access-Control-Allow-Origin ve ilgili başlıklar |
yapılandırılmış bir konsol kökeni için /api/v1/vendor/fleet |
src/cluster_erp/server/app.py:1365-1388 |
Kiracı seçimi¶
multi_tenant kapalıyken her istek süreç veritabanını kullanır (src/cluster_erp/server/dependencies.py:117-118). Açıkken get_db_session kiracıyı önce sunulan belirtecin imzalı kiracı talebinden, sonra X-Tenant-Domain başlığından çözer. Etkin bir kiracıya çözülemeyen istek AUTH_TENANT_UNRESOLVED ile tek bir genel 401 alır (src/cluster_erp/server/dependencies.py:104-157). Model Çoklu kiracılık sayfasında anlatılır.
Yetki denetimleri¶
require_permission(*codes), kullanıcıyı çözen ve listelenen her kodu isteyen bir bağımlılıktır; eksik kod AUTH_PERMISSION_DENIED ve details.required_permission ile 403 yanıtlar (src/cluster_erp/modules/auth/guards.py:205-240, src/cluster_erp/core/errors.py:388-394). Her kod için o koda yapılandırılmış öznitelik ilkelerini de değerlendirir. abac_strict_permission_codes ayarında listelenen kodlar ilke yoksa reddedilir (src/cluster_erp/modules/auth/guards.py:216-235, src/cluster_erp/config/settings.py:341). Bazı yollar oturum açmış kullanıcıyı bunun yerine işleyicinin içinde get_current_user ile denetler; modül sayfaları her yolun korumasını adlandırır. Roller ve ilkeler Roller ve yetkiler ve ABAC ilkeleri sayfalarında anlatılır.
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| cookie transport | TRANSPORT_COOKIE |
Belirteçlerin yanıt gövdesinde değil, yalnızca HttpOnly çerezlerle taşındığı web oturum açma kipi. | çerez taşıması | src/cluster_erp/modules/auth/session_cookies.py:31-32 |
| operator token | require_operator |
Bir operatör konsolu hesabının Bearer belirteci; yalnız /api/v1/vendor yolları okur. |
operatör belirteci | src/cluster_erp/server/routes/vendor.py:84-95 |
| portal token | token |
Tedarikçi portalı yollarında bir tedarikçinin teklif talebi davetini tanımlayan yol bölümü. | portal belirteci | src/cluster_erp/modules/procurement/purchase_rfqs/portal_routes.py:34 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.