Bu özellik, kullanıcı giriş/çıkış olaylarının harici sistemlere (Elasticsearch, Kafka, Webhook vb.) konnektörler aracılığıyla iletilmesini sağlar. Kapsam API Manager (sistem kullanıcıları) ve API Portal (portal kullanıcıları) içindir.
Genel Bakış
Apinizer, kullanıcı giriş/çıkış olaylarını iki farklı katmanda izler:
| Kaynak | Kimler | Ayar Ekranı |
|---|
| API Manager | Yönetici / sistem kullanıcıları | Sistem Ayarları > Log Ayarları > Login Log |
| API Portal | Portal son kullanıcıları (geliştiriciler) | Portal Ayarları > Login Log sekmesi |
Her iki katman için de:
- Log kaydının MongoDB’ye yazılıp yazılmayacağı ayarlanabilir.
- Logların harici bir sisteme (konnektör) gönderilebilmesi için bir veya daha fazla bağlantı hedefi tanımlanabilir.
1. API Manager – Sistem Kullanıcısı Login Log
1.1 Nerede Yapılandırılır?
Sistem Ayarları → Log Ayarları → Login Log
1.2 Ekran Alanları
| Alan | Açıklama |
|---|
| Veritabanına Kaydet | Aktif olduğunda login log kayıtları MongoDB persistent_audit_events koleksiyonuna yazılır. |
| Connector Hedefleri | Login loglarının gönderileceği harici sistem bağlantılarının listesi. |
Yönetim Konsolu giriş kayıtlarının görüntülenmesi için bkz. Giriş Kayıtları.
1.3 Konnektör Ekleme
- Login Log bölümündeki konnektör tablosunun sağ üst köşesindeki
+ butonuna tıklayın.
- Açılan pencerede ortam (environment) için daha önce tanımlanmış bir bağlantı yapılandırması (ConnectionConfig) seçin.
- Bağlantıyı Aktif/Pasif hale getirmek için toggle’ı kullanın.
Konnektörler ortam (environment) bazlı tanımlanır. Bir bağlantı yapılandırması önce Bağlantı Yapılandırması ekranında oluşturulmuş ve ilgili ortama atanmış olmalıdır.
1.4 Tetiklenen Olaylar
| Olay | eventType | Açıklama |
|---|
| Başarılı giriş | LOGIN_SUCCESS | Kullanıcı adı ve parola doğrulandı |
| Başarısız giriş | LOGIN_FAILURE | Hatalı kimlik bilgisi veya kilitli hesap |
Çıkış (logout) olayı şu an için loglanmamaktadır.
{
"source": "API_MANAGER",
"principal": "kullanici.adi",
"email": null,
"displayName": null,
"eventDate": "2026-03-31T10:00:00Z",
"eventType": "LOGIN_SUCCESS",
"remoteAddress": "1.2.3.4",
"message": null,
"errorType": null,
"portalId": null,
"accountId": null
}
1.6 Örnek Başarısız Giriş
{
"source": "API_MANAGER",
"principal": "kullanici.adi",
"email": null,
"displayName": null,
"eventDate": "2026-03-31T10:01:00Z",
"eventType": "LOGIN_FAILURE",
"remoteAddress": "1.2.3.4",
"message": "Bad credentials",
"errorType": "org.springframework.security.authentication.BadCredentialsException",
"portalId": null,
"accountId": null
}
2. API Portal – Portal Kullanıcısı Login Log
2.1 Nerede Yapılandırılır?
Portal Yönetimi → [Portal Seçin] → Ayarlar → Login Log sekmesi
2.2 Ekran Alanları
| Alan | Açıklama |
|---|
| Veritabanına Kaydet | Aktif olduğunda login log kayıtları MongoDB portal_login_logs koleksiyonuna yazılır. |
| Connector Hedefleri | Login loglarının gönderileceği harici sistem bağlantılarının listesi. |
Portal login log ayarları portal başına bağımsızdır. Her portala ayrı konnektör tanımlanabilir.
Portal giriş kayıtlarının görüntülenmesi ve filtreleme için bkz. API Portal Giriş Kayıtları.
2.3 Konnektör Ekleme
Adımlar API Manager ile aynıdır:
- Login Log sekmesindeki konnektör tablosunun
+ butonuna tıklayın.
- Uygun bağlantı yapılandırmasını seçin ve kaydedin.
2.4 Tetiklenen Olaylar
| Olay | loginStatus → eventType | Açıklama |
|---|
| Başarılı giriş | SUCCESS → LOGIN_SUCCESS | Portal kullanıcısı giriş yaptı |
| Başarısız giriş | FAILURE → LOGIN_FAILURE | Hatalı kimlik bilgisi |
{
"source": "API_PORTAL",
"principal": null,
"email": "kullanici@example.com",
"displayName": "Ad Soyad",
"eventDate": "2026-03-31T10:05:00Z",
"eventType": "LOGIN_SUCCESS",
"remoteAddress": "5.6.7.8",
"message": null,
"errorType": null,
"portalId": "portal-abc123",
"accountId": "account-xyz789"
}
3. Desteklenen Konnektör Tipleri
Tüm Apinizer konnektör tipleri login log için kullanılabilir. Yaygın kullanım senaryoları:
| Konnektör Tipi | Kullanım Amacı |
|---|
| Elasticsearch | Merkezi log arama ve dashboarding (Kibana vb.) |
| Kafka / RabbitMQ / ActiveMQ | Gerçek zamanlı event streaming / SIEM entegrasyonu |
| Webhook | Herhangi bir REST endpoint’e HTTP POST |
| Database | Harici ilişkisel veritabanı (JDBC) |
| Syslog / Graylog | Geleneksel syslog altyapısı |
4. Birden Fazla Konnektör
Her iki kaynak (Manager ve Portal) için de birden fazla konnektör tanımlanabilir. Her konnektör bağımsız olarak Aktif/Pasif yapılabilir.
Bir konnektör pasif durumdayken log kaydı oluşsa dahi o konnektöre gönderim yapılmaz.
5. Veritabanı Kaydını Kapatma
Veritabanına Kaydet toggle’ı pasif yapıldığında Apinizer login log kayıtlarını MongoDB’ye yazmaz. Bu durumda loglar yalnızca tanımlı konnektörlere iletilir.
Hem Veritabanına Kaydet hem de tüm konnektörler pasif durumdaysa, login log kayıtları kaybolur. En az bir hedefin aktif olması önerilir.
6. İlgili Teknik Bileşenler (Geliştirici Referansı)
| Bileşen | Dosya | Açıklama |
|---|
| Manager entity | GeneralSettings.java | saveLoginLogToDatabase, recipientLoginLogList alanları |
| Manager servis | UserLoginService.logLoginAttempt() | Login/failure olaylarını DB + konnektörlere yönlendirir |
| Portal entity | PortalLoginLogSettings.java | Portal bazlı ayarlar, portal_login_log_settings koleksiyonu |
| Portal servis | PortalLoginLogService.save() | Portal login olaylarını DB + konnektörlere yönlendirir |
| Event formatı | LoginLogConnectorEvent.java | Konnektöre gönderilen ortak JSON modeli |
| Enum | EnumLoginLogSource | API_MANAGER / API_PORTAL |
7. Bilinen Kısıtlar / Roadmap
- Logout olayı loglanmıyor: Şu an için
LOGIN_SUCCESS ve LOGIN_FAILURE event tipleri desteklenmektedir. Kullanıcı çıkışı (LOGOUT) henüz loglanmamaktadır.
- Portal logout: Portal kullanıcısı çıkış yaptığında bu olay da loglanmamaktadır.
- Kaynak kodu:
UserLoginService.logout() ve portal logout akışı güncellenerek LOGOUT event tipi eklenebilir.