Aynı Domain Altında Ortak Cookie Kullanmak

Asp.Net MVC uygulamalarında aynı domain altında bulunan uygulamaların ortak oturum çerezleri kullanmaları sağlanabilir. Böylece uygulamanın birisinde açılan bir oturumun bilgileri diğer uygulamalarla paylaşılabilir. Bu işlemin gerçekleşmesi için uygulamaların web.config dosyasında machine config değerlerinin aynı olması ve forms authentication etiketinde aşağıdaki ayarların yapılması gerekir. sytem.web etiketinde aşağıdaki ayarların ortak çerez kullanacak uygulamalar için aynı şekilde yapılması gerekir. Aşağıdaki şekilde site1.domain.com.tr sisteminde açılan oturumun diğer uygulamalarla paylaşılması görülmektedir.

Çerezlerin Ortak Şifreleme Anahtarıyla Şifrelenmesi

Uygulamalar tarayıcı ile kendilerine gönderilen şifrelenmiş çerezlerin içeriklerini okuyabilmesi için bir şifreleme anahtarına ihtiyaç duyarlar. Varsayılan ayarlarda her uygulamanın şifreleme anahtarı farklıdır. Böylece her uygulamanın çerezi yalnız o uygulama tarafından çözülebilir ve içeriği okunabilir. Farklı uygulamaların aynı çerez içeriğini okuyabilmesi için aynı machineKey anahtarını kullanmaları gerekir. Bu işlem için web.config dosyasında aşağıdaki gibi ayarlama yapılır. Ortak çerez kullanacak her uygulama aynı şifreleme anahtarına sahip olacak şekilde ayarlanmalıdır.

<machineKey
validationKey=”Buradaki key bilgisi aynı olmalıdır”
decryptionKey=”Buradaki key bilgisi aynı olmalıdır”
validation=”SHA1″
decryption=”AES” />

Çerezlerin Uygulamaya Gönderilmesi

Çerezler tarayıcı tarafından istemci bilgisayar belleğinde veya sabit diskinde saklanırlar. Tarayıcı çerezin domain bilgisine bakarak talep edilen siteyle ilgili bir çerez olup olmadığına bakar. Eğer talep edilen sayfanı domain ismine sahip bir geçerli bir çerez varsa tarayıcı o çerezi isteğe ekler ve öyle gönderir. Uygulamalar da tarayıcıdan gelen bu çerezi okuyarak işlem yapar. Bir çerez tarayıcı ile farklı alt domainlerdeki birçok farklı uygulamaya gönderilsin isteniyorsa çerez oluşturulurken domain bilgisi de belirtilmelidir. Çerezin oluşturulduğu yerde domain bilgisi aşağıdaki gibi tanımlanabilir.

HttpCookie cokie = new HttpCookie(FormsAuthentication.FormsCookieName, bilet);
cokie.Domain = “domain.com.tr”;

Çerez yukarıdaki domain bilgisi ile oluşturulduğunda alt domainlerdeki uygulamalara da gönderilecektir. ayni.domain.com.tr veya ayin2.domain.com.tr alan adlarında barınan uygulamalara talep gönderilirken bu çerez tarayıcı tarafından talebe eklenecektir.

Uygulamaların aynı domain altında bulunan çerezleri kullanabilmesi için forms etiketinde aşağıdaki ayarlama yapılır.
<authentication mode=”Forms”>
<forms loginUrl=”login” enableCrossAppRedirects =”true” domain=”domain.com.tr”></forms>
</authentication>

Yukarıdaki ayarlar aynı domain altında bulunan uygulamaların çerezleri ortak kullanabilmesini sağlayacaktır. Böylece şifrelenmiş çerezler, uygulamalar tarafından çözümlenerek kullanılabilir.

Özet

Yukarıdaki ayarlar ile domain bilgisi aynı olan çerezler, tarayıcı tarafından otomatik olarak uygulamaya gönderilecektir. Uygulama gelen çerezi çözümleyerek kullanabilecektir. Birinci uygulamada oluşturalan bir çerez, aynı alt domainde bulunan başka bir uygulamaya tarayıcı ile gönderilir. Ancak ikinci uygulama gelen bu çerezi okuyabilmesi için aynı şifreleme anahtarına sahip olması gerekir. İkinci uygulamada farklı bir şifreleme anahtarı varsa, tarayıcı çerezi gönderse bile uygulama içeriğini okuyamaz. İkinci uygulamanın gelen çerezi okuyabilmesi için, web.config dosyasındaki machineKey anahtarını birinci uygulama ile aynı olacak şekilde ayarlanır.

Buradaki yöntem, sadece aynı domain altında bulunan uygulamaların çerezleri paylaşabilmesini sağlar.

Add a Comment