SAML 2.0'ı Anlamak Oturum Zaman Aşımından Sonra Tek Oturum Kapatma
SAML 2.0 Tek Oturum Açma (SSO) sistemleri, kullanıcıların tek bir kimlik bilgisi kümesi kullanarak çeşitli uygulamalarda oturum açmasına olanak tanıdığından, kullanıcı kimlik doğrulamasını önemli ölçüde basitleştirmiştir. Ancak Tek Oturum Kapatma (SLO) kavramıyla ilgili, özellikle de bir kullanıcının oturum açmadığı için bir Hizmet Sağlayıcıda (SP) oturumu sona erdiğinde ne olacağıyla ilgili önemli sorunlar da vardır. Bu durumda, Kimlik Sağlayıcının bunu yapması gerekir. (IDP) oturumu da sona erdi mi?
SP ile IDP arasındaki oturum yönetimi, SAML 2.0 bağlamında güvenli ve verimli erişimin sağlanması açısından önemlidir. Kullanıcının hala IDP'ye bağlı olması gerekip gerekmediği bir SP oturumunun ne zaman sona ereceği her zaman açık değildir; bu durum, aynı IDP'ye bağlı diğer uygulamaları etkileyebilir. Bu, kullanılabilirliğin yanı sıra güvenlikle ilgili soruları da gündeme getiriyor.
Bu oturum zaman aşımlarını ele almaya yönelik net bir en iyi uygulamanın birçok işletme tarafından, özellikle de Microsoft Entra gibi arayüzleri kullananlar tarafından oluşturulması gerekmektedir. Bir SP oturumunun yalnızca SP seviyesinde durması mı daha iyidir, yoksa aynı zamanda kullanıcının IDP hesabındaki oturumunu kapatan bir SLO ile mi sonuçlanmalı?
Oturum zaman aşımlarını ele almak ve hem güvenliği hem de kullanılabilirliği garanti etmek için en etkili teknikleri göstermek üzere gerçek dünyadan örnekler kullanan bu belge, bu tür durumlarda SAML 2.0 SLO olaylarının ele alınmasına yönelik standart uygulamaları ve standartları incelemektedir.
Emretmek | Kullanım örneği |
---|---|
session() | Kullanıcı oturumlarını kontrol etmek için Express uygulamasında kullanılır. Örnekte, gerektiğinde oturum kapatma mantığının tetiklenebilmesi için kullanıcı etkinliğinin ve oturum zaman aşımlarının izlenmesine yardımcı olur. |
maxAge | Oturum çerezinin geçerli olduğu zaman dilimini belirtir. Bu durumda, zamanlayıcı 600000 milisaniye veya 10 dakika sonra sona erecek ve bir oturum kapatma olayı başlatacak şekilde ayarlanmıştır. |
create_logout_request_url() | Servis Sağlayıcı oturumu sona erdiğinde, bu SAML2 kitaplık yöntemiyle oluşturulan Tek Oturum Kapatma (SLO) istek URL'si Kimlik Sağlayıcıya (IDP) iletilir. |
readFileSync() | SAML2 Servis Sağlayıcısını ayarlamak için gerekli olan anahtar dosyaları ve sertifikaları eşzamanlı olarak okur. Hizmet Sağlayıcı ile Kimlik Sağlayıcının güvenli bir şekilde iletişim kurabilmesi için bu sertifikalar gereklidir. |
assert_endpoint | Başarılı kimlik doğrulamanın ardından Kimlik Sağlayıcının SAML onayını iletmek için kullanacağı URL'yi belirtir. Bunu yaparak, Servis Sağlayıcı düzeyinde kullanıcı kimlik doğrulaması garanti edilir. |
window.onload | Bu olay, ön uçtaki oturum hareketsizlik zamanlayıcısını sıfırlamak için kullanılır. Kullanıcı programı ilk kez yüklediğinde zamanlayıcının yeniden başlamasını sağlar. |
onmousemove | Oturum zamanlayıcısını sıfırlamak için bu olay dinleyicisi herhangi bir fare hareketini algılar. Kullanıcı davranışına göz kulak olmak ve yanlışlıkla oturum zaman aşımlarını önlemek için bu önemlidir. |
fetch() | Oturum zaman aşımından sonra sunucuya eşzamansız olarak bir SLO isteği göndermek için kullanılır. Kimlik Sağlayıcıya bağlanmak ve kullanıcının IDP'deki oturumunu kapatmak için arka uç mantığını başlatır. |
setTimeout() | Ön uç kodundaki bu işlev, önceden belirlenen miktarda hareketsizlikten sonra oturum zaman aşımı olayının oluşmasına neden olur. Kullanıcı davranışlarının takip edilmesi ve güvenlik düzenlemelerinin uygulanması açısından önemlidir. |
SAML 2.0 Oturum Zaman Aşımı İşlemesiyle Tek Oturum Kapatmayı Optimize Etme
Kullanma Node.js ve Express'te, Tek Oturum Kapatma (SLO) işlemlerine yönelik arka uç komut dosyası, kullanıcı oturumunun sona ermesini izleme ve Servis Sağlayıcı (SP) ve Kimlik Sağlayıcı (IDP) düzeylerinde bir oturum kapatma sırası başlatma yeteneğine odaklanır. Ekspres oturumların yönetimi bu mantığın merkezinde yer almaktadır. Örneğimizde, oturumu önceden belirlenmiş bir süre (on dakika) hareketsizlikten sonra sonlandırılacak şekilde ayarlayarak bir tetikleme noktası oluşturuyoruz. Oturum sona erdiğinde komut dosyası, SAML 2.0 oturum kapatma isteğini başlatmak için `create_logout_request_url()} yöntemini kullanır ve bu daha sonra IDP'ye bağlanır (bu durumda, Microsoft Girişi) kullanıcı oturumunu tamamen sonlandırmak için. Bu, kullanıcının sistemden tamamen çıkış yapmasını garanti ederek güvenliği artırır.
Yükliyoruz SAML sertifikaları ve SP (MyApp) ile IDP (Microsoft Entra) arasında güvenli iletişimi sağlamak için 'readFileSync()} komutunu kullanarak uygulamaya anahtarlar girin. Bu sertifikalar, oturum kapatma isteğinin kimliğini doğrulayarak yasa dışı oturum kapatmalara karşı koruma sağlar ve iletişimin şifrelenmiş ve onaylanmış kalmasını garanti eder. Kullanıcı, oluşturulduktan sonra oturum kapatma isteği URL'sine gönderilir; burada IDP oturum kapatma işlemini gerçekleştirir ve gerekirse ilgili uygulamalarda kullanıcının oturumunu sonlandırır. Çoklu uygulama Tek Oturum Açma (SSO) kurulumlarının güvenliğini ve bütünlüğünü korumak, bu iki yönlü iletişimi gerektirir.
JavaScript komut dosyası, kullanıcı etkinliklerini ön uçta gerçek zamanlı olarak izlemek için gereklidir. Kullanıcı programla her etkileşime girdiğinde, 'onmousemove} ve 'onkeypress' gibi olay dinleyicilerini kullanarak oturum zaman aşımını sıfırlarız. 'setTimeout()' ile ayarlanan bir zamanlayıcı kullanıcıyı uyarır ve kullanıcı boşta kaldığında otomatik olarak SP'deki (Uygulamam) oturumunu kapatır. Oturum kapatmanın ardından, daha önce ele alınan SAML 2.0 oturum kapatma işlemi, ön uç komut dosyasının "fetch()" kullanarak arka uca bir SLO isteği göndermesiyle başlatılır. Bu teknik, SP seviyesindeki hareketsizliğin hızlı, güvenli ve hatasız bir şekilde ele alınmasını sağlar.
SAML 2.0 entegrasyonu ve oturum yönetimi birleştirilir, kullanıcı deneyimi kusursuzdur ve güvenlik standartları korunur. Kullanıcının, hareketsizlik sırasında izin verilenden daha uzun süre kimlik doğrulamasında kalmasını önlemek için, oturum zaman aşımı hem yerel SP oturumu kapatmayı hem de IDP oturum kapatmayı başlatır. SAML 2.0, oturum zaman aşımlarına ilişkin herhangi bir özel davranış gerektirmese de, SLO'yu başlatmak için oturumun sona ermesini kullanmak genellikle en iyi uygulama olarak kabul edilir. Boşta kalan oturumları sonlandırarak, çeşitli SSO bağlantılı platformlarda senkronize oturum kapatmaları etkinleştirerek güvenlik ve kullanıcı deneyimi arasında bir denge kurar.
SAML 2.0'da Oturum Zaman Aşımı ile Tek Oturum Kapatma İşlemi için Node.js ve Express Kullanımı
Node.js ve Express'i kullanarak Servis Sağlayıcı oturum zaman aşımlarını kullanarak SAML 2.0 SLO'yu yönetmek için arka uç yöntemi. Bu çözüm, oturumun süresinin dolup dolmadığını kontrol etmek ve SLO'yu Kimlik Sağlayıcı düzeyinde başlatmak için SAML isteklerini kullanır.
// Required modules for Node.js and SAML SSO
const express = require('express');
const session = require('express-session');
const saml2 = require('saml2-js');
const app = express();
// Service Provider (SP) setup
const sp = new saml2.ServiceProvider({
entity_id: "http://myapp.com/metadata.xml",
private_key: fs.readFileSync("./cert/sp-private-key.pem").toString(),
certificate: fs.readFileSync("./cert/sp-certificate.pem").toString(),
assert_endpoint: "http://myapp.com/assert"
});
// Identity Provider (IDP) setup
const idp = new saml2.IdentityProvider({
sso_login_url: "https://login.microsoftonline.com/sso",
sso_logout_url: "https://login.microsoftonline.com/logout",
certificates: fs.readFileSync("./cert/idp-certificate.pem").toString()
});
// Session management
app.use(session({
secret: 'mySecretKey',
resave: false,
saveUninitialized: true,
cookie: { maxAge: 600000 } // Set session expiration time
}));
// Middleware to handle session timeout and SLO
app.use((req, res, next) => {
if (req.session.expires && Date.now() > req.session.expires) {
sp.create_logout_request_url(idp, {}, (err, logout_url) => {
if (err) return res.status(500).send("Logout error");
return res.redirect(logout_url); // Trigger SLO
});
} else {
next(); // Continue if session is valid
}
});
app.listen(3000, () => {
console.log("Server running on port 3000");
});
SAML 2.0 SLO'yu İşlemek için JavaScript Ön Uç ve Boşta Kalma Zaman Aşımı Algılamayı Kullanma
Bir ön uç yönteminde, kullanıcının hareketsizliğini izlemek ve Tek Oturum Kapatmayı (SLO) başlatmak için vanilya JavaScript kullanılarak bir oturum zaman aşımı algılanır. Bu, Hizmet Sağlayıcıya Kimlik Sağlayıcıya bir SLO isteği göndermesini söyler.
// Define variables for session timeout
let timeoutDuration = 600000; // 10 minutes
let timeoutTimer;
// Reset the timer on any user interaction
function resetTimer() {
clearTimeout(timeoutTimer);
timeoutTimer = setTimeout(triggerLogout, timeoutDuration);
}
// Trigger logout function
function triggerLogout() {
alert("Session expired due to inactivity.");
window.location.href = "/logout"; // Redirect to SP logout
}
// Monitor user actions
window.onload = resetTimer;
document.onmousemove = resetTimer;
document.onkeypress = resetTimer;
// SLO event triggered after logout
function sendSLORequest() {
fetch('/api/slo', { method: 'POST' })
.then(response => {
if (response.ok) {
console.log("SLO request sent to IDP");
}
})
.catch(err => console.error("SLO request failed", err));
}
SAML 2.0'ı Keşfetmek: Tek Oturum Kapatma ve Hareketsizlik Zaman Aşımı
SAML 2.0 Tek Oturum Kapatma (SLO) nasıl adreslenir? hareketsizlik Servis Sağlayıcı (SP) seviyesinde yönetilmesi kritik bir bileşendir. SP'de manuel oturum kapatmanın aynı zamanda Kimlik Sağlayıcı (IDP) oturumunun da kapatılmasına neden olacağı açık olmasına rağmen, hareketsizlikten kaynaklanan oturum zaman aşımları işleri karmaşık hale getirir. SAML 2.0 standardı, oturum sona erdiğinde SLO'nun nasıl ele alınması gerektiğini açıkça belirtmez. Ancak bu, kullanıcı deneyimini ve güvenliğini iyileştirebilecek en iyi uygulamaların benimsenmesine olanak tanır.
Örneğin, hareketsizlik nedeniyle SP'nin kapatılmasından sonra bile, Microsoft Entra (IDP) aracılığıyla MyApp gibi bir uygulamada oturum açan kullanıcılar sıklıkla IDP'de oturum açmış halde kalır. Kullanıcı, aynı SSO'yu kullanan diğer uygulamalar hâlâ çalışırken oturumunun tamamen kapatıldığını düşünüyorsa bu durum, güvenlik endişeleri. SAML oturum yönetimini IDP düzeyinde SP zaman aşımı olayını taklit edecek ve senkronize oturum kapatmaları garanti edecek şekilde ayarlamak, bu riski azaltmanın bir yoludur.
Ön uç kodunun boşta algılama tekniklerini uygulaması başka bir faktördür. Geliştiriciler, kullanıcı etkinliği için olay dinleyicilerini kullanarak, etkinlik dışı kalma sürelerini tahmin edebilir ve oturumun süresi dolmadan kullanıcıları uyarabilir. Kullanıcılar bunu kullanarak oturumları üzerinde kontrol sahibi olabilirler ve oturumlarının güvenli olduğundan emin olabilirler. TOA oturumu sürekli çalışmaz. SSO ile entegre bir ortamda geliştiriciler, bu faktörler arasında bir denge kurarak güvenliği ve kullanıcı konforunu koruyabilirler.
SAML 2.0 SLO ve Oturum Zaman Aşımlarına İlişkin Sık Sorulan Sorular
- Bir oturum zaman aşımına uğradığında Servis Sağlayıcı düzeyinde ne olur?
- Genellikle, SP seviyesinde bir oturum zaman aşımına uğradığında kullanıcının programdaki oturumu kapatılır. Ancak SAML 2.0 spesifikasyonu bunun IDP'de bir SLO'ya neden olmasını gerektirmediğinden sistemin nasıl kurulduğuna bağlıdır.
- Kimlik Sağlayıcıdaki bir SLO, Servis Sağlayıcı oturumu zaman aşımı nedeniyle tetiklenmeli mi?
- Kuruluşun politikası bunu yönetir. SAML 2.0 bunu zorunlu kılmasa da çoğu kişi, güvenlik nedeniyle SP oturumu sona erdiğinde IDP'de SLO'yu başlatmayı tercih ediyor.
- Etkin olmayan bir oturum sona erdiğinde SLO'yu nasıl gerçekleştirebilirim?
- Oturumun sona ermesi bir arka uç mekanizması aracılığıyla tespit edilebilir ve bu mekanizma daha sonra bir oturum başlatır. create_logout_request_url() ÜİYOK'e bir SLO talebinde bulunma prosedürü.
- Ön uçta oturumun etkin olmadığı nasıl tespit edilir?
- Etkinlik dinleyicileri şunu beğendi: onmousemove Ve onkeypress Kullanıcı uygulamayla her etkileşim kurduğunda zamanlayıcıyı sıfırladıkları için genellikle hareketsizliği izlemek için kullanılır.
- SP'de oturum kapattıktan sonra IDP oturumunun açık olması güvenli midir?
- Özellikle kullanıcı tamamen çıkış yaptığına inanıyorsa, IDP oturumunun açık bırakılması bir güvenlik riski doğurabilir. SP oturumu sona erme tarihini çoğaltmak için SLO'nun ayarlanması önerilir.
SAML 2.0 Oturum Zaman Aşımı Yönetimini Tamamlama
Bir SSO sisteminde güvenliğin sürdürülmesi, Kimlik Sağlayıcının ve Hizmet Sağlayıcının oturum kapatma işlemlerini senkronize etmesini sağlamayı gerektirir. SAML 2.0 oturum zaman aşımlarının nasıl ele alınması gerektiğini zorunlu kılmasa da birçok işletme tek oturum kapatmayı tek tip bir şekilde ele alır.
Güvenliği artırmak amacıyla, Hizmet Sağlayıcı oturumunun hareketsizlik nedeniyle sona erdiği her seferde bir SLO isteği gönderilmesi önerilir. Bu, kullanıcının hem Kimlik Sağlayıcıdan hem de uygulamadan çıkış yapmasını sağlayarak birçok platformda istenmeyen erişimi önler.
SAML 2.0 En İyi Uygulamalarına İlişkin Referanslar ve Kaynaklar
- SAML 2.0 ve Tek Oturum Kapatma standartları ve yönergelerine ilişkin ayrıntılı belgeler resmi sayfada bulunabilir. OASIS SAML 2.0 Temel Spesifikasyonu .
- Microsoft Entra ve onun SSO ve SLO ile entegrasyonu hakkında bilgi edinmek için şu adresteki resmi Microsoft belgelerine bakın: Azure Active Directory ve SAML .
- Örneklerde kullanılan Node.js SAML kitaplığı, oturum yönetimi teknikleriyle birlikte şu adreste daha ayrıntılı olarak incelenebilir: SAML2-js Kitaplığı Belgeleri .
- Tek Oturum Açma ve oturum yönetimini yapılandırmayla ilgili en iyi uygulamaları anlamak için şu makaleyi ziyaret edin: SSO En İyi Uygulamaları Auth0 tarafından.