Microsoft hesabıyla oturum açın
Oturum açın veya hesap oluşturun.
Merhaba,
Farklı bir hesap seçin.
Birden çok hesabınız var
Oturum açmak istediğiniz hesabı seçin.

ASP .NET Destek Sesi sütunu

Form kimlik doğrulaması sorunlarını giderme

Bu sütunun ihtiyaçlarınıza özelleştirmek için Knowledge Base makaleleri ve Destek Sesi sütunu ve görmek istediğiniz konuları ilgilendiren konular hakkındaki fikirlerinizi gelecekte ele göndermek için sizi davet etmek istiyoruz. Fikir ve görüş İste formunu kullanarak gönderebilirsiniz. Bu sütunun alt form için bir bağlantı yoktur.

ASP.NET Destek Sesi sütunu için Hoş Geldiniz! Benim adım Jerry Orman olur. Microsoft ile 5 yıldan olmuştur ve Microsoft FrontPage gibi Web ile ilgili teknolojiler ve yeni Microsoft SharePoint teknolojileri odaklanan benim zamanının çoğunu harcadığınız. Microsoft ASP.NET Destek Mühendisi olarak çalışma geçen yıl için harcanan. Microsoft ASP.NET form kimlik doğrulaması sorunlarını gidermek nasıl açıklamak için bu ay içinde Destek Sesi sütunu yapacağım.

Form kimlik doğrulaması sorunlarını giderme

Bir ASP.NET uygulamasında form kimlik doğrulaması kullandığınızda, kullanıcı rasgele oturum açma sayfasına yönlendirilir olduğunda oluşan bir sorunu gidermek gerekli bulabilirsiniz. İdeal bir dünyada, bu sorunu kolayca bir hata ayıklayıcı iliştirin ve sorun yakalama sağlar bir biçimde olacaktır. Üretim ortamlarında, ancak nadiren böyledir. Bunun gibi rasgele bir sorunu gidermek için böylece kök nedenini daraltabilirsiniz sorunla ilgili bilgileri bağlanmanız gerekir.

Bu sütunda, Forms kimlik doğrulaması kavramı biz kısaca değineceğiz. Biz sonra hangi senaryoların bir kullanıcı oturum açma sayfasına yönlendirilmesini neden ve nasıl sorunu yalıtmak için ilgili verileri yakalamak içine bakmak gerekecektir. Biz de form kimlik bilgileri günlüğe bir IHttpModule arabirimini uygulamak nasıl ele alacağız.

Formlar kimlik doğrulamasına genel bakış

Forms kimlik doğrulaması'nı kullanarak bir Web sitesinde bir kullanıcının kimliğini doğrular, sunucu bir çerez oluşturur. Tanımlama bilgisinin bir şifreli forms kimlik doğrulaması bileti değerdir. Tanımlama bilgisi her istekte uygulama sunucusuna geçirilir ve FormsAuthenticationModule sınıf tanımlama bilgisi değeri şifresini çözer ve kullanıcı geçerli olup olmadığını belirler.

Varsayılan olarak, FormsAuthenticationModule sınıf Machine.config dosyasına eklenir. FormsAuthenticationModule sınıfı FormsAuthentication işlemini yönetir.

Machine.config dosyasındaki bir girdi aşağıdadır:

<httpModule>     …other modules…
<add name="FormsAuthentication"
type="System.Web.Security.FormsAuthenticationModule" />
…other modules…
</httpModule>

Form kimlik doğrulaması kullanarak kimlik doğrulaması için genel HTTP trafiği, aşağıdakine benzer:

  1. İstemci Default.aspx için HTTP GET gönderir. Formlar kimlik doğrulama tanımlama bilgisi gönderilmez.

  2. Sunucu Login.aspx 302 (yeniden yönlendirme) yanıt gönderir.

  3. İstemci HTTP POST için Login.aspx gönderir. Oturum açma bilgilerini içerir.

  4. Sunucu, Default.aspx 302 (yeniden yönlendirme) yanıt gönderir. Formlar kimlik doğrulama tanımlama bilgisi eklenmiştir.

  5. İstemci Default.aspx için HTTP GET gönderir. Bu formlar kimlik doğrulama tanımlama bilgisini içerir.

Uygulama ve forms kimlik doğrulaması kullanma hakkında daha fazla bilgi için aşağıdaki MSDN Web sitelerini ziyaret edin:

http://msdn2.microsoft.com/en-us/library/7t6b43z4.aspx

http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication(vs.71).aspx

http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket(vs.71).aspxForm kimlik doğrulaması tanımlama bilgileri paylaşma hakkında daha fazla bilgi için aşağıdaki ASP.NET Web sitesini ziyaret edin:

http://quickstarts.asp.net/QuickStartv20/aspnet/doc/security/formsauth.aspx

Bir kullanıcı oturum açma sayfasına yeniden yönlendirilebilirsiniz nedenleri

Formlar kimlik doğrulama tanımlama bilgisi kaybolur

Senaryo 1


Bu senaryoda, kullanıcı bir Web sitesine oturum açar. Belirli bir noktada istemci isteği sunucuya gönderir ve
FormsAuthenticationModule sınıfı, tanımlama bilgisi almaz. Kullanıcı isteği tanımlama bilgisi Microsoft Internet Information Services (IIS) oturum tanımlama bilgisi etkinleştirerek içermiyorsa belirleyebilirsiniz. Bunu yapmak için şu adımları izleyin:

  1. IIS Microsoft Yönetim Konsolu'nu (MMC) açın.

  2. Web sitesini sağ tıklatın ve sonra tıklatın
    Özellikleri.

  3. Web sitesi sekmesini tıklatın ve sonra Günlüğü etkinleştir'itıklatın.

  4. Günlük biçimi, W3C Genişletilmiş günlük dosyası biçimiolduğundan emin olun.

  5. Özellikler' i tıklatın.

  6. Gelişmiş sekmesini tıklatın ve sonra tıklatın
    Genişletilmiş özellikler.

  7. Genişletilmiş özellikleraltında Cookie(cs(Cookie)) onay kutusunu tıklatıp seçin ve başvuran (cs(Referer)) onay kutusu.

Bu sorun oluştuktan sonra sorunu ve bu istemcinin IP adresini istemcinin vardı belirlemek. Bu istemcinin IP adresi üzerinde IIS günlüğe Filtre Uygula ve <tanımlama bilgisi> sütununu görüntüleyin.

Not: IIS günlükleri ayrıştırmak için günlük ayrıştırıcısı kullanabilirsiniz. Günlük ayrıştırıcı karşıdan yüklemek için aşağıdaki Microsoft Web sitesini ziyaret edin:

http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07Belirli bir kullanıcı isteklerini listesini elde ettikten sonra oturum açma sayfası isteklerini arayın. Bildiğiniz bu sayfaya yeniden yönlendirilir ve istekleri yeniden yönlendirme oluşmadan önce görmek istediğiniz. Bir şey görürseniz aşağıdaki istemci ya da tanımlama bilgisi göndermedi veya tanımlama bilgisi ağdaki istemci ve sunucu arasında kaldırıldı.

İlk oturumun budur.

Yöntemi

Sayfa

Yanıt

Tanımlama bilgileri

Al

/Default.aspx

302 (yeniden yönlendirme)

Hiçbir tanımlama

Al

/Login.aspx

200 (başarılı)

Hiçbir tanımlama

Yayınla

/Login.aspx

302 (yeniden yönlendirme)

Hiçbir tanımlama

Al

/Default.aspx

200 (başarılı)

.ASPXAUTH

Al

/SomePage.aspx

302 (yeniden yönlendirme)

Hayır. ASPXAUTH tanımlama

Sitesinde olmadan bir sayfa için istek tarafından takip diğer istekler bunlar. ASPXAUTH tanımlama.

Yöntemi

Sayfa

Yanıt

Tanımlama bilgileri

Al

/SomePage.aspx

302 (yeniden yönlendirme)

Hayır. ASPXAUTH tanımlama

Al

/Login.aspx

200 (başarılı)

Hayır. ASPXAUTH tanımlama

Yayınla

/Login.aspx

302 (yeniden yönlendirme)

Hayır. ASPXAUTH tanımlama

Al

/SomePage.aspx

200 (başarılı)

.ASPXAUTH


Not: Kullanıcı ilk istekten kalıcı bir tanımlama bilgisi oluşturmadığınız sürece formlar kimlik doğrulama tanımlama bilgisi olması olası değil. IIS günlüğüne yalnızca istekte alınan tanımlama bilgileri gösterecektir. Formlar kimlik doğrulama tanımlama bilgisi ilk isteği isteği başarılı oturum açma girişiminden sonra olacaktır.

Senaryo 2


İstemcinin tanımlama bilgisi sınırı aşıldığında, forms kimlik doğrulaması tanımlama bilgisi de kaybolabilir. Microsoft Internet Explorer'da 20 tanımlama bilgisi sınırı yoktur. 20 tanımlama bilgisi istemciye oluşturulduktan sonra önceki tanımlama bilgilerini istemcinin koleksiyonundan kaldırılır. Yoksa. ASPXAUTH tanımlama bilgileri kaldırılır, sonraki isteği işlendiğinde, kullanıcı oturum açma sayfasına yönlendirilir.

Bu iki senaryo aynı şekilde giderebilirsiniz. Hemen önce oturum açma sayfasına yeniden yönlendirme isteği bakın. Bu sayfa için istek tanımlama bilgileri oluşturursa, bu araştırmaya bir şey olacaktır.

Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

306070 numarası ve Internet Explorer'daki bir tanımlama bilgisinin boyutu sınırları


İstemciye gönderilen HTTP üstbilgilerini görüntülemek üzere Fiddler kullanabilirsiniz. Trafik yakaladıktan sonra bir istek çift tıklatın ve Set-Cookie üstbilgiyi görmek için Üstbilgi ' yi tıklatın. Başarılı bir oturum izleme, başarılı bir oturum açma yanıtındaki Set-Cookie başlığı görürsünüz.

Fiddler'ı karşıdan yüklemek için aşağıdaki Fiddler Web sitesini ziyaret edin:

http://www.fiddlertool.com/fiddler/

Senaryo 3


İstemci isteği ayrılmasından sonra gönderilen paketleri etkiler çeşitli katmanları vardır. Ağ aygıtı bir tanımlama bilgisi kaldırıyor belirlemek için istemci ve sunucudaki bir ağ izleme yakalamak ve sonra tanımlama bilgisi isteği gövdesinde aramak vardır. Tanımlama bilgisi gönderildiğinden emin olmak için istemci isteği üzerine bakın ve sunucu tanımlama bilgisi alınan emin olmak için sunucu izleme denetlemek istiyorsunuz.

İstemci isteği

Kullanıcının kimliği doğrulandıktan sonra bir GET isteği budur. Forms kimlik doğrulaması bileti bilgileri mavi renkle vurgulanır. Bu tanımlama bilgileri istemci sol onaylar. Netmon gibi bir ağ Yakalama aracı kullandığınızda aslında bağdaştırıcısı üzerinden gitti trafik konusuna bakın.

47 45 54 20 68 74 74 70-3a 2f 2f 6c 6f 63 61 6c   GET http://local68 6f 73 74 2f 46 6f 72-6d 73 41 75 74 68 4c 6f   host/FormsAuthLo
67 54 65 73 74 2f 57 65-62 46 6f 72 6d 31 2e 61 gTest/WebForm1.a
73 70 78 20 48 54 54 50-2f 31 2e 31 0d 0a 41 63 spx HTTP/1.1..Ac
63 65 70 74 3a 20 69 6d-61 67 65 2f 67 69 66 2c cept: image/gif,
…Other headers of the GET request…
63 68 65 0d 0a 43 6f 6f-6b 69 65 3a 20 2e 41 53 che..Cookie: .AS
50 58 41 55 54 48 3d 33-43 45 46 39 42 39 41 30 PXAUTH=3CEF9B9A0
43 33 37 41 44 46 36 33-45 36 42 44 33 37 42 36 C37ADF63E6BD37B6
39 43 44 41 32 35 30 30-30 46 38 30 37 32 38 46 9CDA25000F80728F
35 31 43 39 35 36 36 44-31 34 43 35 34 31 34 35 51C9566D14C54145
38 31 43 39 33 45 32 41-30 31 44 44 43 44 45 46 81C93E2A01DDCDEF
32 34 41 31 37 34 32 39-34 31 30 43 30 39 37 34 24A17429410C0974
42 33 45 43 42 30 36 34-32 32 38 45 33 35 33 39 B3ECB064228E3539
39 41 38 32 32 42 33 42-39 33 36 44 46 30 38 46 9A822B3B936DF08F
42 41 42 44 33 45 31 30-32 44 30 30 32 31 30 43 BABD3E102D00210C
32 45 31 33 39 38 30 37-39 42 32 33 35 32 39 46 2E1398079B23529F
34 46 35 44 37 34 41 3b-20 50 72 6f 66 69 6c 65 4F5D74A; Profile
3d 56 69 73 69 74 6f 72-49 64 3d 62 32 34 65 62 =VisitorId=b24eb

Sunucu tarafı isteği

Sunucu ulaştı isteğiyle baktığınızda, sunucu istemciye gönderilen bilgilerin aynısını alınan emin olmak istersiniz. Sunucu aynı bilgileri almadı, çerez burada kaldırıldı belirlemek için ağdaki diğer aygıtların araştırmak gerekir.

Not: Tanımlama bilgilerini kaldırma ISAPI filtrelerinin örneklerini olmuştur. Web sunucusu bir tanımlama bilgisi alındı, ancak IIS günlüklerine tanımlama listelenmeyen onaylarsanız, ISAPI filtreleri kontrol edin. Sorunun giderilip giderilmediğini görmek için filtreleri kaldırmak zorunda kalabilirsiniz.

Forms kimlik doğrulaması biletinin zaman aşımına uğradı

Diğer ortak yönlendirilecek bir kullanıcı için forms kimlik doğrulaması biletinin süresi dolmuş nedenidir. Forms kimlik doğrulaması biletinin zaman aşımına iki yolla yapabilirsiniz. İlk senaryo, mutlak zaman aşımı kullanırsanız oluşur. Süre dolduğunda mutlak zaman aşımı ile kimlik doğrulaması biletinin süresi doluyor. Örneğin, 20 dakikalık bir süre sonu ayarlama ve kullanıcı 2: 00'da site ziyaret. Kullanıcı 2:20 PM sonra sitesini ziyaret ederse kullanıcı oturum açma sayfasına yönlendirilir.

Kayan zaman aşımı değeri kullanırsanız, biraz daha karmaşık bir senaryodur. Yarı süresi sona erme zamanını sonra kullanıcı siteyi ziyaret ederseniz, tanımlama bilgisi ve elde edilen bilet güncelleştirilir. Örneğin, 20 dakikalık bir süre sonu kayan zaman aşımı değeri kullanarak ayarlayın. Kullanıcı site 2: 00'da ziyaret ve kullanıcı 2:20 PM at süresi dolacak şekilde ayarlamak için bir tanımlama bilgisi alır. Sona erme yalnızca kullanıcı 2:10 PM sonra siteyi ziyaret güncelleştirilir. Kullanıcı, 2:09 PM at sitesini ziyaret etmişse, sona erme süresinin yarısı geçirilmedi çünkü bilet güncelleştirilmez. Sonra kullanıcı siteyi ziyaret 2:21 PM at 12 dakika bekler, biletin sona erecektir. Kullanıcı oturum açma sayfasına yönlendirilir.

Tek yönlü yaklaşım için formlar kimlik doğrulama tanımlama bilgisi ve bilet bilgileri günlüğe kaydetmek için bu tür bir sorunu olduğu. Bu şekilde, çerez değerleri nelerdir ve IIS tarafından alınıp alınmadığını görebilirsiniz. Bir HttpModuleyazma ve sonra bu modül istek ardışık düzene takma yapabilirsiniz. Gereksinim duyduğunuz bilgileri almak için uygulamanızın kodu değiştirmeniz gerekmez.

Ekli örnek Microsoft .NET Framework 1.1 ve .NET Framework 2.0 çalışır ve tüm yorumlar vardır. Örnek aşağıdaki dosyaları içerir:Not ı sağlamak bir karşıdan yükleme bağlantısı FormsAuthLogger.zip dosyasında sağlanan kodu için.

Ana alanları in üzerine:


Her zaman, göndermek istediğiniz fikirler konularda ücretsiz havaya gelecekteki sütunları olarak veya kullanarak Bilgi Bankası
Bunu iste formu.

Daha fazla yardıma mı ihtiyacınız var?

Yeteneklerinizi geliştirin

Eğitimleri keşfedin >

Yeni özellikleri ilk olarak siz edinin

Microsoft Insider’a katılın >

Bu bilgi yararlı oldu mu?

Dil kalitesinden ne kadar memnunsunuz?
Deneyiminizi ne etkiledi?

Geri bildiriminiz için teşekkürler!

×