- Kullanıcı uygulamanızdan çıkış yaptı
- Kullanıcı cihazını kaybetti ve siz ön taraftan “tüm oturumları sonlandır” tetikliyorsunuz
- Güvenlik olayı nedeniyle kullanıcının tüm token’larını temizliyorsunuz
Bir kullanıcı Flextell panelinden uygulamanıza verdiği yetkiyi geri çekerse, o uygulamaya ait tüm access ve refresh token’lar anında iptal edilir. Bu durumda ek bir istek atmanıza gerek yoktur.
OpenID Connect ile oturum sonlandırma
Kullanıcıyı “Flextell’den çıkış yaptır + bana geri yönlendir” akışıyla logout etmek için OpenID Connect RP-Initiated Logout 1.0 standardındakiend_session_endpoint kullanılır. Flextell’in end_session_endpoint’i:
end_session_endpoint alanı) dinamik çekmenizi öneririz.
İstek
Kullanıcıyı tarayıcı üzerinden aşağıdaki URL’e yönlendirin:Daha önce kullanıcıya verilmiş
id_token değeri. Flextell bu token’ın imzasını RS256 ile doğrular; sub (kullanıcı) ve aud (client_id) claim’lerini çıkarır. Süresi dolmuş id_token’lar da kabul edilir — spec gereğince bu token yalnızca kimlik tespiti için kullanılır, yetkilendirme için değil.Çıkış sonrası kullanıcının yönlendirileceği URL. Uygulamanızın panelinde kayıtlı Çıkış Sonrası Yönlendirme URI’leri listesindeki bir değerle birebir eşleşmelidir. Eşleşmezse Flextell bu parametreyi yok sayar ve kullanıcıyı kendi onay sayfasına yönlendirir.
Callback’te
post_logout_redirect_uri’ye aynen eklenip geri dönen opak değer. CSRF koruması için rastgele üretip dönüşte karşılaştırın.id_token_hint yoksa hangi uygulama için logout olduğunu anlamak için gönderilebilir. id_token_hint varken zorunlu değildir.Davranış — first-party vs third-party
Flextell, istektekiid_token_hint’in imzasını doğruladıktan sonra hangi client için logout yapıldığını belirler ve iki farklı yol izler:
- First-party istemci (Flextell’in kendi uygulamaları): Onay ekranı gösterilmez, logout doğrudan yapılır ve kullanıcı (varsa)
post_logout_redirect_uri’ye yönlendirilir. - Third-party istemci (sizin uygulamanız): Kullanıcıya “Çıkmak istediğinize emin misiniz?” onay ekranı gösterilir. Kullanıcı onayladığında POST ile logout tetiklenir. Bu, kullanıcının haberi olmadan oturumunun kapatılmasını engeller.
Ne silinir?
Onaylanmış logout tetiklendiğinde Flextell şunları yapar:- O kullanıcı + o
client_idiçin tüm aktif access token’ları revoke eder. - Bu access token’lara bağlı tüm refresh token’ları revoke eder.
- Kullanıcının Flextell web oturumunu (session cookie ve DB kaydı) tamamen siler.
Başarılı yönlendirme
post_logout_redirect_uri geçersizse / listede yoksa / id_token_hint gönderilmediyse Flextell kullanıcıyı kendi “çıkış yapıldı” onay sayfasında tutar.
Post-Logout Redirect URI nasıl kaydedilir?
Panelde Bağlantılar → Uygulamalar ekranında uygulamanızı düzenleyin, Çıkış Sonrası Yönlendirme URI’leri alanına logout sonrası yönlendirileceğiniz URL’leri ekleyin:- HTTPS zorunludur; yalnızca
http://localhostvehttp://127.0.0.1istisnadır. - Tam eşleşme zorunludur (query string, trailing slash dahil).
- Birden fazla URL ekleyebilirsiniz (ör. prod ve staging ayrı).
- Native uygulamalar için custom scheme (
myapp://logout-callback) kabul edilir.
Kullanıcı uygulamayı panelden kaldırırsa
Kullanıcı panelden Bağlantılar → Yetkilendirdiğim Uygulamalar ekranına gidip uygulamanıza verdiği erişimi kaldırırsa:- O kullanıcıya ait tüm access token’lar anında geçersizleşir
- O kullanıcıya ait tüm refresh token’lar anında iptal edilir
- Uygulamanız bundan sonra o kullanıcı adına yaptığı her API çağrısında
401 Unauthorizedalır - Yeniden erişim için kullanıcıyı Authorization Code akışından tekrar geçirmelisiniz
İyi pratik: çıkış sırasında yerel temizlik
Kullanıcı uygulamanızdan çıkış yaptığında, token’ları kendi tarafınızda da temizleyin. Yalnızca cookie silmek yeterli değildir; refresh token’ı veritabanından da kaldırın:Client secret sızıntısı
client_secret sızdıysa:
- Hemen panelden uygulamanızı silin — mevcut tüm token’lar iptal olur.
- Yeni bir uygulama oluşturun; yeni
client_id/client_secretalın. - Kullanıcılarınızı yeni uygulama ile Authorization Code akışından tekrar geçirin.