Hesap başına tek oturuma izin veren bir politika, ikinci giriş gelene kadar çözülmüş görünür. İki sonuç mümkündür: yeni gelen, çalışan oturumun yerini alır ya da çalışan oturum yuvayı korur ve yeni gelen reddedilir. Yalnızca ikincisi ilk oturum kazanır politikasıdır. Çoğu kişinin başvurduğu istemci seçeneği eşzamanlılığı etkinleştirir ve bu nedenle bu sonucu vermez.

Tek bir ayarın arkasında iki sözleşme saklıdır

Eşzamanlılık kapalıyken aynı sertifika adını taşıyan ikinci bir bağlantı, çalışan oturumu dışarı itebilir. Eşzamanlılığı açmak birden çok oturuma aynı anda izin verir, bu da bir sınırın tersidir. İki durumdan hiçbiri ret politikası değildir, bu yüzden karar tamamen başka bir yerde verilmelidir.

Herhangi bir şey uygulamadan önce sözleşmeyi yazın: kim reddedilir, çalışan oturumu hangi kanıt tanımlar ve temiz bir bağlantı kesintisi olmadan oturum öldüğünde ne olur. Kimsenin bu şekilde dile getirmediği bir politika sonradan test edilemez.

Tahliye, bağlantı kancanızdan önce gerçekleşir

Sunucunun 2.6 kod yolunda, yeni istemci için erken hazırlık, eşzamanlılık kapalıyken aynı ada sahip mevcut örnekleri kaldırır. Bu kaldırma, bağlantı işleyicileri zinciri çalışmadan önce gerçekleşir. Bu nedenle yinelenen kaydı fark edip hata döndüren bir betik, yeni geleni çalışan oturum çoktan atıldıktan sonra reddeder - politikanın önlemeyi amaçladığı sonucun tam kendisi. Upstream uygulamasındaki geri çağrı sırası, derlemeniz için tek güvenilir yanıttır.

StageWho can still refuseEffect on the incumbent
Certificate checkServer trust configurationNone
Authentication decisionThe authentication controllerNone, because establishment has not run
Connect handlerA profile scriptAlready evicted in the same-name case
Post-establishmentStatus tooling, monitoringBoth sessions already exist or one is gone

Durum dosyasını yoklamak da bir kapı değildir. Aynı anda gelen iki deneme, biri onaylamadan önce ikisi de boş bir yuva görebilir ve ikisi de devam eder.

Kararı kimlik doğrulamaya taşıyın

Yönetim arayüzü, sertifika doğrulamasından sonra kimlik doğrulama kararını devralabilir. Bu düzenlemede denetleyici bir gözlemci değildir: bağlanan her istemci örneğini alır ve o örneğin devam edip edemeyeceğini yanıtlar. Yanıt kuruluştan önce geldiği için bir ret, çalışan oturumu el değmeden bırakır. Aynı kanal bağlantı kesintilerini bildirir ve denetleyici böylece yuvanın meşru şekilde serbest bırakıldığını öğrenir.

Her yeni örnek bu kapıdan geçmelidir; yeniden bağlanmalar ve istem olmadan yeniden kimlik doğrulayan her yol dahil. Bazı örneklerin hiç ulaşmadığı bir kapı hiçbir şeyi korumaz ve bu atlama, biri dolambaçlı yolu deneyene kadar görünmez kalır.

Jetonlar kapının yanından geçebilir

Bir jeton verildikten sonra, sunucu onu dahili olarak doğrulayabilir ve o bağlantı için harici kimlik doğrulamayı atlayabilir. Yönetim çağrısı hiç gerçekleşmez, bu yüzden yalnızca orada uygulanan yuva denetimi yeni örneği hiç görmez. Bu davranış kullanıcılar için bir kolaylık, eşzamanlılık politikası için bir deliktir. Jetonla doğrulanan bağlantıların eşdeğer yetkili bir denetimden geçmesini sağlayın ya da politika her bağlantıda karar istiyorsa jeton yolunu devre dışı bırakın.

Bunu her jetonu koşulsuz kabul ederek telafi etmeyin. Süresi dolmuş veya geçersiz bir jeton yine de başarısız olmalı ve diğer her şey gibi aynı karar noktasından başarısız olmalıdır.

Rezervasyonu bir adrese değil, bir örneğe bağlayın

Adres zayıf bir kimliktir: aynı dizüstü bilgisayardan yeniden bağlanma başka bir adresten gelebilir ve kopyalanmış bir kimlik bilgisi aynı adresten gelebilir. Rezervasyonu sunucunun atadığı istemci örneğine bağlayın, böylece zaten kabul edilmiş örneğin yeniden kimlik doğrulaması sahibi olarak tanınsın. Yeni örnek tanımlayıcısı, aynı jetonu sunsa bile önce gelen kazanır kararıyla kendi yuvasını almalıdır.

Yalnızca başarısız denemeye ait rezervasyonu serbest bırakın. Daha eski bir denemeden gelen gecikmiş bağlantı kesintisi olayı daha yeni bir sahibin yuvasını silmemelidir, bu yüzden serbest bırakma hesabı değil örneği adlandırır. Denetleyici yeniden başladıktan sonra kimseyi kabul etmeden önce canlı oturumları uzlaştırın ve hesaba hizmet eden her ağ geçidinde aynı kuralı uygulayın.

Gerçekten eskimiş bir yuvanın nasıl kurtarılacağına ayrıca karar verin. Yöneticinin onu temizlemek için belgelenmiş bir yola ihtiyacı vardır ve bu yol yalnızca yeniden bağlan düğmesine basan bir kullanıcı tarafından erişilebilir olmamalıdır.

Önemli çiftleri test edin: neredeyse aynı anda iki giriş, temiz bir kapanıştan sonra yeniden bağlanma, çalışan oturumun yeniden kimlik doğrulaması, reddedilen yeni gelen ve denetleyicinin yeniden başlatılması. Her durumda çalışan oturum kullanılabilir kalmalı ve yeni gelen diğer hesaplara zarar vermeden reddedilmelidir.

İlgili makaleler