OIDC oturum kapatma ve oturum yönetimi: Kapsamlı bir rehber
OIDC kimlik doğrulaması ve oturum yönetimini derinlemesine keşfedin. Güvenli oturum yönetimi için OIDC RP başlatılan, IdP başlatılan ve arka kanal oturum kapatma nasıl uygulanacağını öğrenin.
OIDC oturum yönetimi nedir
OpenID Connect (OIDC) OAuth 2.0 protokolü üzerine kurulu basit bir kimlik katmanıdır. Müşterilerin, yetkilendirme sunucusu tarafından gerçekleştirilen kimlik doğrulamasına dayanarak son kullanıcıyı doğrulamasına ve son kullanıcı hakkında temel profil bilgilerini birlikte çalışabilir ve REST-benzeri bir şekilde edinmesine olanak tanır.
OIDC, basitlik ve esneklik odaklı tasarlanmış olup, kullanımı ve uygulanması kolaydır. Web uygulamalarında, mobil uygulamalarda ve API'lerde tek oturum açma (SSO) ve kimlik doğrulama için yaygın olarak kullanılmaktadır.
OIDC'de kimlik doğrulama durumu ve oturum yönetimini anlamak çok önemlidir. Bu makale, Kimlik Sağlayıcı (IdP) ve Güvenen Taraf (RP) veya Hizmet Sağlayıcı (SP) arasındaki etkileşim bağlamında OIDC oturumlarının ve kullanıcı kimlik doğrulama durumunun nasıl yönetildiğini açıklar.
Bu makale birkaç anahtar terim içerir.
- Kimlik Sağlayıcı (IdP): Kullanıcı kimliklerini saklayan ve doğrulayan hizmet.
- Hizmet Sağlayıcı (SP) veya Güvenen Taraf (RP): Kullanıcılara hizmet sağlayan ve kimlik doğrulaması için IdP'ye dayanan bir web uygulaması veya hizmet.
- Oturum açma oturumu veya Kimlik doğrulama oturumu: Bir kullanıcının IdP'ye giriş yaptığında kurulan oturum.
- İzin: IdP tarafından oluşturulan ve yönetilen merkezi kullanıcı kimlik doğrulama ve yetkilendirme bilgileri.
- Tek Oturum Açma (SSO): Kullanıcının bir dizi oturum açma kimlik bilgisi (örneğin, ad ve şifre) kullanarak birden fazla uygulamaya erişmesine izin veren bir oturum ve kullanıcı kimlik doğrulama hizmeti.
OIDC kimlik doğrulama akışı nasıl çalışır
OIDC oturum ve kullanıcı kimlik doğrulama durumu yönetimini daha iyi anlamak için bir web uygulaması için OIDC kimlik doğrulama akışına kısaca göz atalım:
- Kullanıcı web uygulamasına (RP) erişir.
- RP, kullanıcıyı kimlik doğrulama için OIDC sağlayıcısına (IdP) yönlendirir.
- OIDC sağlayıcısı, kullanıcının oturum açma oturum durumunu kontrol eder. Eğer oturum yoksa veya oturum süresi dolmuşsa, kullanıcı oturum açmaya yönlendirilir.
- Kullanıcı kimlik doğrulamak için oturum açma sayfası ile etkileşime girer.
- Oturum açma sayfası, etkileşim sonucunu OIDC sağlayıcısına gönderir.
- OIDC sağlayıcısı kullanıcı için yeni bir oturum açma oturumu ve kimlik doğrulama izni oluşturur.
- OIDC sağlayıcısı kullanıcıyı bir kimlik doğrulama kodu ile web uygulamasına geri yönlendirir (Yetkilendirme Kodu akışı).
- RP, kimlik doğrulama kodunu alır ve kullanıcı bilgilerine erişmek için jetonlar ile değişim yapar.
RP oturum açma oturumu yönetimi nedir
Kullanıcı IdP'ye giriş yaptığında bir oturum açma oturumu kurulur. Bu oturum, kullanıcının IdP'deki kimlik doğrulama durumunu izlemek için kullanılır. Oturum tipik olarak, kullanıcının kimliği, kimlik doğrulama zamanı ve oturumun sona erme zamanı gibi bilgileri içerir. Kullanıcı ilk kez giriş yaptığında oluşturulur ve kullanıcı çıkış yapana veya oturum süresi dolana kadar sürdürülür.
Bir oturum çerezi kullanıcının tarayıcısında güvenli bir şekilde ayarlanarak oturum durumu korunur. Oturum çerezi, kullanıcının oturumunu tanımlamak ve sonraki kimlik doğrulama talepleri için kullanıcıyı doğrulamak için kullanılır. Bu çerez genellikle istemci tarafı erişimini engellemek ve güvenli iletişim sağlamak için HttpOnly
ve Secure
bayraklarıyla ayarlanır.
Tek RP için bir oturum
Kullanıcının farklı cihazlardan veya tarayıcılardan eriştiği her RP için ayrı bir kullanıcı oturum açma oturumu oluşturulur. Bu, kullanıcının kimlik doğrulama durumunun her RP için ayrı ayrı korunduğu anlamına gelir. Kullanıcı bir RP'den çıkış yaptığında, oturum süresi dolana kadar veya kullanıcı tüm RP'lerden çıkış yapana kadar diğer RP'lerde hala doğrulanmı ş olarak kalacaktır.
Çoklu RP için merkezi oturum
Bu merkezi oturum yönetimi, IdP'nin kullanıcının oturumu aktif olduğu sürece ve kimlik doğrulama talepleri aynı kullanıcı ajanından (cihaz/tarayıcı) geldiği sürece birden fazla RP arasında tutarlı bir kimlik doğrulama durumu korumasına da olanak tanır. Bu mekanizma, kullanıcının tekrar giriş yapmasına gerek kalmadan birden fazla RP'ye erişebilmesini sağlayan SSO yeteneklerini etkinleştirir.
İstemci tarafı kimlik doğrulama durumu
OIDC'de, istemci uygulama (RP) kullanıcının kimliğini ve kimlik doğrulama veya yetkilendirme durumunu doğrulamak için IdP tarafından verilen jetonlara güvenir. İstemci tarafındaki "oturum açma oturumu" IdP tarafından verilen jetonlar tarafından sürdürülenir.
- ID Jetonu: Kullanıcı bilgileri içeren kısa ömürlü bir jetondur ve doğrulanan kullanıcının kimliğini doğrulamak için kullanılır.
- Erişim Jetonu: Kullanıcı adına korunan kaynaklara erişim sağlayan bir jetondur. Erişim jetonunun ömrü, yapılandırmaya bağlı olarak kısa veya uzun ömürlü olabilir. İstemci uygulamaları, kullanıcının kimlik doğrulama durumunu belirlemek için erişim jetonunun geçerliliğine güvenebilir. Eğer erişim jetonu süresi dolmuşsa veya temizlenmişse, kullanıcı "çıkış yapmış" veya "doğrulanmamış" kabul edilebilir ve yeniden kimlik doğrulama gerekebilir.
- Yenileme Jetonu: Eğer
offline_access
kapsamı talep edilip verilmişse, istemci uygulama yenileme jetonu alabilir. Kullanıcının kimlik doğrulama durumunu kullanıcının tekrar kimlik doğrulaması gerektirmeden uzatmanın bir yolunu sağlar. İstemci uygulama, mevcut erişim jetonunun süresi dolduğunda yeni bir erişim jetonu almak için yenileme jetonunu kullanabilir. Yenileme jetonu geçerli olduğu sürece, kullanıcının kimlik doğrulama durumu kullanıcı etkileşimine gerek kalmadan sürdürülebilir.
Bu jetonların birleşimi, istemci uygulamanın kullanıcının kimlik doğrulama durumunu koruyabilmesini ve kullanıcı adına korunan kaynaklara erişebilmesini sağlar. İstemci uygulama bu jetonları güvenli bir şekilde saklamalı ve yaşam döngülerini yönetmelidir. (Örneğin, SPA uygulamaları için jetonlar tarayıcının yerel depolamasında veya oturum depolamasında saklanabilir. Web uygulamaları için jetonlar sunucu tarafı oturum verilerinde veya çerezlerde saklanabilir.)
OIDC oturum kapatma mekanizmaları
OIDC'de oturum kapatma süreci, hem merkezi IdP yönetimli oturum açma oturumlarının hem de dağıtılmış istemci tarafı jetonlarının dahil olması nedeniyle çok yönlü bir kavramdır.
İstemci tarafında jetonları ve yerel oturumu temizleme
İstemci tarafında bir kullanıcının kimlik doğrulama durumunu iptal etmek veya iptal etmek nispeten basittir. İstemci uygulama, kullanıcının tarayıcısından veya belleğinden saklanan jetonları (ID jetonu, erişim jetonu ve yenileme jetonu) kaldırabilir. Bu eylem, istemci tarafında kullanıcının kimlik doğrulama durumunu etkili bir şekilde geçersiz kılar.
Kendi kullanıcı oturum açma oturumlarını yöneten web uygulamaları için ek adımlar gerekebilir. Bu adımlar arasında oturum çerezini ve kullanıcının tam olarak oturum kapatıldığından emin olmak için IdP tarafından verilen jetonlar gibi herhangi bir oturum verisini temizlemek bulunmaktadır.
IdP'deki merkezi oturum açma oturumunu temizleme
IdP, her kullanıcı için merkezi bir oturum açma oturumu sürdürür. Bu oturum aktif olduğu sürece kullanıcı, istemci tarafındaki jetonlar temizlenmiş olsa bile otomatik olarak yeniden doğrulanabilir ve istemci uygulamasına katılım olmadan yeni jetonlar verilebilir.
Kullanıcıyı IdP'den tamamen oturum kapatmak için, istemci uygulama (RP) IdP'ye bir oturum kapatma isteği başlatabilir. Uygulama (RP) kullanıcıyı oturum açma oturumunu sonlandırmak ve oturum çerezlerini temizlemek için IdP'nin oturum sonu uç noktasına yönlendirmelidir. Bu, aynı merkezi oturumu paylaşan tüm uygulamalarda (RP'ler) tam bir oturum kapatmayı sağlar. Oturum açma oturumu sona erdikten sonra, IdP aynı oturumu paylaşan herhangi bir bağlı RP'den bir jeton isteği aldığında, IdP kullanıcıyı tekrar kimlik doğrulama yapmaya yönlendirecektir.
OIDC arka kanal oturum kapatma
Bazı durumlarda, bir kullanıcı bir uygulamadan (RP) oturumunu kapattığında, başka hiçbir kullanıcı etkileşimi olmadan otomatik olarak tüm diğer uygulamalardan (RP'ler) da oturumunun kapatılmasını isteyebilir. Bu, arka kanal oturum kapatma mekanizması kullanılarak gerçekleştirilebilir.
IdP bir RP'den bir oturum kapatma isteği aldığında, sadece oturum açma oturumunu temizlemez, aynı zamanda aynı oturumu kullanan ve kayıtlı bir arka kanal oturum kapatma uç noktası olan tüm RP'lere bir arka kanal oturum kapatma bildirimi gönderir.
RP'ler, arka kanal oturum kapatma bildirimini aldıklarında, kullanıcının oturumunu ve jetonlarını temizlemek için gerekli eylemleri gerçekleştirerek, kullanıcının tüm uygulamalardan tam olarak oturum kapatıldığından emin olabilirler.