JWT Kimlik Doğrulama
Flowvio, RFC 7519 standardındaki JSON Web Token (JWT) kullanır. Stateless ve ölçeklenebilir bu yapı, her API isteğinde oturum verisi için merkezi depolamaya ihtiyaç duymaz. Token'lar imzalanmış veri paketleridir; sunucu her token'ı imzadan doğrulayabilir.
Token Türleri
- Access Token: Kısa ömürlü (varsayılan 60 dakika). Her API isteğinin
Authorizationheader'ına eklenir. Süresi dolunca yenileme token'ı ile değiştirilir. - Refresh Token: Uzun ömürlü (varsayılan 7 gün). Yalnızca yeni access token almak için kullanılır. Çıkış yapılınca kara listeye alınır.
Giriş Akışı
- Kullanıcı e-posta ve şifresini gönderir:
POST /api/auth/login/ - Sunucu kimliği doğrular ve access + refresh token çifti döner
- İstemci token'ları güvenli depolamaya kaydeder
- Sonraki her API isteğine
Authorization: Bearer <access_token>eklenir - Access token süresi dolduğunda
POST /api/auth/token/refresh/ile yenilenir - Kullanıcı çıkış yaptığında
POST /api/auth/logout/refresh token'ı kara listeye alır
Kaba Kuvvet Koruması
django-axes entegrasyonu ile art arda başarısız giriş denemeleri izlenir ve otomatik engelleme uygulanır:
- 5 başarısız denemeden sonra hesap geçici kilitlenir
- Kilitlenme süresi yapılandırılabilir (varsayılan: 30 dakika)
- IP bazlı veya kullanıcı adı bazlı izleme
- Başarısız girişler denetim loguna yazılır
Şifre Yönetimi
Şifre işlemleri için aşağıdaki endpoint'ler kullanılır:
| İşlem | Endpoint |
|---|---|
| Şifre değiştirme (giriş yapmış kullanıcı) | POST /api/auth/change-password/ |
| Şifre sıfırlama talebi (e-posta gönder) | POST /api/auth/password-reset/ |
| Şifre sıfırlama (token ile) | POST /api/auth/password-reset-confirm/ |
E-posta Doğrulama
Yeni hesap oluşturulduğunda kayıt e-postasına doğrulama bağlantısı gönderilir. E-posta doğrulanmadan hesap tam yetkiyle kullanılamaz. Doğrulama bağlantısı 24 saat geçerlidir; süresi dolunca yeni bağlantı talep edilebilir.
Mevcut Kullanıcı Bilgisi
GET /api/auth/me/
Yanıt:
{
"id": 42,
"email": "kullanici@sirket.com",
"first_name": "Ahmet",
"last_name": "Yılmaz",
"roles": ["Satış Uzmanı"],
"permissions": ["task.view", "task.create", ...],
"organization_unit": { "id": 5, "name": "İstanbul Satış" }
}
# Kullanıcının erişebileceği menüler
GET /api/auth/menu/
Deneme Hesabı Yönetimi
Deneme sürümü kaydı ve yönetimi için ayrı endpoint'ler kullanılır:
POST /api/trial/register/— Yeni deneme hesabı oluştur (kimlik doğrulama gerektirmez)GET /api/trial/status/— Deneme süresi durumu ve kalan günPOST /api/trial/extend/— Deneme süresini uzat (yönetici yetkisi)
Deneme süresi bittiğinde hesap kısıtlanır. 2 kez 7 günlük uzatma hakkı tanınabilir.