Güvenlik Modeli#
Bu doküman, keysis entegrasyonunda güvenlik sorumluluklarının nasıl dağıldığını açıklar.
Sorumluluk Dağılımı#
keysis (Identity Provider / Authorization Server)#
- Kullanıcı doğrular (authentication)
- Token üretir ve imzalar (ID Token / Access Token / Refresh Token)
- Claim ve scope politikalarını uygular
- SSO / MFA gibi kimlik politikalarını yönetir
Uygulama (OAuth2 Client)#
- Authorization Code Flow'u başlatır
- Authorization code'u token ile değiştirir
- Token’ları güvenli şekilde kullanır
- Security context ve session yönetimini kurar
Token Türleri (OIDC)#
- ID Token: kullanıcı kimliğini temsil eder (OIDC)
- Access Token: resource server çağrılarında kullanılır
- Refresh Token: access token yenileme için kullanılır (policy’ye bağlı)
Session Yönetimi#
- OAuth2 login sonrası oluşan kullanıcı oturumu, Spring Session mekanizması ile yönetilir.
- Session verileri:
- Varsayılan olarak in-memory
- Redis profili aktifken Redis üzerinde saklanabilir.
Session saklama şekli, kimlik doğrulama sürecini değil, oturumun sürekliliğini etkiler.
Yetkilendirme (Authorization)#
- Uygulama tarafında yetkilendirme, token içeriğindeki claim/scope/role bilgilerine göre yapılır.
- “Kimlik doğrulama” keysis’te, “yetki kontrolü” uygulama/resource server tarafında uygulanır.
Logout Desteği (OIDC)#
hvl-oauth-oidc-client, OpenID Connect Logout spesifikasyonuna uygun logout senaryolarını destekler.
Front-Channel Logout#
- Logout işlemi kullanıcı tarayıcısı üzerinden başlatılır.
- keysis, tanımlı front-channel logout URI’lerine yönlendirme yapar.
- Uygulama, ilgili kullanıcıya ait HTTP session’ı sonlandırır.
Back-Channel Logout#
- Logout isteği keysis tarafından sunucu–sunucu (server-to-server) çağrı ile iletilir.
- Kullanıcı etkileşimi olmadan aktif oturumlar geçersiz kılınır.
- Dağıtık (cluster) yapılarda tutarlı logout sağlanır.
Logout mekanizmaları, kullanıcı doğrulama sürecini etkilemez; yalnızca login sonrası oluşan oturum ve token yaşam döngüsünü yönetir.
“Client” Terminoloji Notu#
Bu bölümde geçen OAuth2 Client, OAuth2 standardındaki “Client” rolüdür. Modül altındaki “İstemci API (Client)” dokümanı ise Feign Client kullanımını anlatır.