Forms kimlik doğrulaması ile ilgili sorunları giderme

Makale çevirileri Makale çevirileri
Makale numarası: 910439 - Bu makalenin geçerli olduğu ürünleri görün.
asp .NET Destek Sesi sütunu

Forms 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üşlerinizi kullanarak gönder Bunun için sor Form. Bu sütunun alt form için bir bağlantı yoktur.
Hepsini aç | Hepsini kapa

Bu Sayfada

asp.net Destek Sesi sütunu için Hoş Geldiniz! Benim adı Jerry Orman. Ben Microsoft ile üzerinde 5 yıldır ve büyük bir çoğunluğu benim Süre Odaklı üzerinde Microsoft FrontPage gibi Web ile ilişkili teknolojiler ve Yeni Microsoft SharePoint teknolojileri. Çalışma geçen yıl kullanmış olduğunuz Microsoft asp.net destek mühendisi olarak. Bu ay içinde destek sesi sütun, ben form kimlik doğrulaması sorunlarını gidermek nasıl açıklamak için gidiyorum Microsoft asp.net.

Forms kimlik doğrulaması sorunlarını giderme

Form kimlik doğrulamasını asp.net uygulamasını kullandığınızda, kullanıcı olduğunda oluşan bir sorunu gidermek gerekli bulabilirsiniz rasgele oturum açma sayfasına yeniden yönlendirildi. İdeal bir dünyada bu sorun kolayca eklemek istiyorum bir şekilde ortaya bir Hata Ayıklayıcı ve yakalama sorunu. Üretim ortamlarında, ancak bu nadiren olur büyük/küçük harf. Buna benzer rasgele bir sorunu gidermek için kök daraltabilirsiniz böylece sorunla ilgili bilgileri günlüğe kaydetmek gerekir neden.

Bu sütunda biz kısaca ele alacağız Forms kimlik doğrulaması kavramı. Biz daha sonra hangi senaryoların bakmak gerekecektir bir kullanıcıya oturum açma sayfası ve nasıl veri yakalamak için yeniden yönlendirilmesini sağlama sorunu yalıtmak için uygundur. Biz de form kimlik bilgilerini günlüğe bir IHttpModule arabirimini nasıl ele alacağız.

Formlar kimlik doğrulamasına genel bakış

Ne zaman bir kullanıcı form kimlik doğrulaması kullanarak bir Web sitesi kimliğini doğrular, Sunucu bir çerez oluşturur. Tanımlama bilgisinin bir şifreli forms kimlik doğrulaması bileti değerdir. Tanımlama bilgisi için her isteğini sunucuya geçirilir Uygulama ve FormsAuthenticationModule sınıfı bir çerez şifresini çözer ve Kullanıcı veya 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>
Forms 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. Bu 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 dahil edilir.
  5. İstemci Default.aspx için http get gönderir. Bu formlar kimlik doğrulama tanımlama bilgisini içerir.
Uygulama ve kullanma hakkında daha fazla bilgi için Forms kimlik doğrulaması, 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) .aspx
Form 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, istemcinin sunucuya bir istek gönderir ve FormsAuthenticationModule sınıfı, tanımlama bilgisi almaz. Şunları yapabilirsiniz Kullanıcı isteği tanımlama bilgisini tanımlama bilgisi etkinleştirerek içermiyorsa belirlemek Microsoft Internet Information Services (IIS) günlük. Bunu yapmak için şu adımları izleyin:
  1. IIS Microsoft Yönetim Konsolu (MMC) açın.
  2. Web sitesini sağ tıklatın ve sonra tıklatınÖzellikler.
  3. ' I tıklatın Web sitesi sekmesini tıklatın ve sonra Etkinleştirme Günlüğe kaydetme.
  4. Günlük biçimi olduğundan emin olun W3C Extended Günlük dosyası Biçim.
  5. ' I tıklatın Özellikler.
  6. ' I tıklatın Gelişmiş sekmesini tıklatın ve sonraGenişletilmiş Özellikler.
  7. Altında Genişletilmiş Özellikler, seçmek için tıklatın Cookie(cs(cookie)) onay kutusu ve Başvuranı (cs(Referer)) onay kutusu.
Bu sorun oluştuktan sonra hangi istemci 'D belirlemek sorun ve o istemcinin IP adresi. Bu istemcinin IP adresini IIS günlüğüne filtre uygulamak, tanımlama bilgisigörüntülemek > sütun.

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-f8d975cf8c07
O belirli gelen istekler listesini elde ettikten sonra Kullanıcı, oturum açma sayfası isteklerini arayın. Bunlar yeniden yönlendirilmiş biliyor Bunun için sayfa ve istekleri önce görmek istediğiniz yeniden yönlendirme oluştu. İstemci aşağıdakine benzer bir şey görürseniz ya da ağdaki istemci arasında tanımlama veya tanımlama bilgisi kaldırıldı göndermedi ve sunucusu.

İlk oturum açma budur.
Bu tabloyu kapaBu tabloyu aç
YöntemiSayfaYanıtTanımlama bilgileri
AL/Default.aspx302 (Yeniden yönlendirme)Hayır Tanımlama bilgileri
AL/Login.aspx200 (Başarılı)Hayır Tanımlama bilgileri
DEFTERE NAKLET/Login.aspx302 (Yeniden yönlendirme)Hayır Tanımlama bilgileri
AL/Default.aspx200 (Başarılı).ASPXAUTH
AL/SomePage.aspx302 (Yeniden yönlendirme)Hayır .aspxauth tanımlama
Bunlar bir istek tarafından sitesindeki bir sayfaya ve ardından diğer istekler olmadan.aspxauth tanımlama bilgisi.
Bu tabloyu kapaBu tabloyu aç
YöntemiSayfaYanıtTanımlama bilgileri
AL/SomePage.aspx302 (Yeniden yönlendirme)Hayır .aspxauth tanımlama
AL/Login.aspx200 (Başarılı)Hayır .aspxauth tanımlama
DEFTERE NAKLET/Login.aspx302 (Yeniden yönlendirme)Hayır .aspxauth tanımlama
AL/SomePage.aspx200 (Başarılı).ASPXAUTH

Not Kullanıcının ilk istekten sahip bir form olası değil kimlik doğrulama tanımlama bilgisini kalıcı bir tanımlama bilgisi oluşturmakta olduğunuz sürece. IIS günlüğüne yalnızca size tanımlama bilgileri gösterecektir, isteği alındı. Formlar kimlik doğrulama tanımlama bilgisi için ilk istek isteği sonra başarılı olacaktır oturum açma girişimi.
Senaryo 2

İstemcinin tanımlama bilgisi sınırı aşıldığında, forms kimlik doğrulaması tanımlama bilgisi de kaybolabilir. Microsoft Internet Explorer 20 tanımlama bilgisi sınırı yoktur. Sonra 20 tanımlama bilgisi istemci üzerinde oluşturulmuş, önceki cookies istemciden 's kaldırılır koleksiyonu. Varsa.aspxauth tanımlama bilgisi kaldırıldı, sonraki istek işlenirken, kullanıcı oturum açma sayfasına yeniden yönlendirilir.

Bu senaryoların aynı yolla giderebilirsiniz. İsteği üzerine hemen arayın oturum açma sayfasına yeniden yönlendirme önce. Bu sayfa isteği üretir tanımlama bilgileri, bu araştırmak için bir şey olacaktır.

Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
306070Internet Explorer'daki bir tanımlama bilgisinin sayı ve boyut sınırlamaları

Fiddler http başlıklarını görüntülemek için kullanın istemciye gönderilir. Trafik yakaladıktan sonra bir istek çift tıklatın, ve ardından Üstbilgileri Set-Cookie üstbilgiyi görmek için. İzleme, bir oturum açma başarılı yanıtı Set-Cookie başlığında göreceksiniz bir başarılı oturum açma.

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 bırakır sonra çeşitli katmanları vardır gönderilen paketleri etkiler. Bir ağ aygıtı olup olmadığını belirlemek için tanımlama bilgisi kaldırma, istemci ve sunucu üzerinde bir ağ izlemesi yakalaması vardır, ve tanımlama bilgileri için istek gövdesinde bakın. İstediğiniz tanımlama bilgisinin gönderildiği emin olmak için istemci isteğini bakın ve sunucu denetleme Sunucu tanımlama bilgisi alınan emin olmak için izleme.

İstemci isteği

Kullanıcının kimliği doğrulandıktan sonra get isteği budur. , Forms kimlik doğrulaması bileti bilgi mavi renkle vurgulanır. Bu onaylar tanımlama bilgileri istemci olduğunu kaldı. Bir ağ yakalama kullandığınızda Aracı, Netmon gibi gerçekten kurulmadan trafiği bkz: Bağdaştırıcı.
47 45 54 20 68 74 74 70-3a 2f 2f 6c 6f 63 61 6c   GET http://local
68 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, istediğiniz sunucu aynı bilgileri alınan emin olun, gönderilen istemci. Sunucu aynı bilgileri almak değil, diğer aygıtlar üzerinde araştırmaya ihtiyaç tanımlama bilgileri nerede kaldırıldı belirlemek için ağ.

Not Tanımlama bilgilerini kaldırma ISAPI filtrelerinin örneklerini edilmiştir. Web sunucusunun tanımlama aldı, ancak çerez listelenmemiş onaylamak ISAPI filtreleri IIS günlüklerine bakın. Olmadığını görmek için filtreleri kaldırmak zorunda kalabilirsiniz sorun giderilmiştir.

Formlar kimlik doğrulama bileti zaman aşımına uğradı

Bir kullanıcının yeniden yönlendirilmesi diğer sık karşılaşılan nedeni, Forms kimlik doğrulaması anahtarın süresi doldu. Forms kimlik doğrulaması bilet zaman aşımına iki şekilde yapabilirsiniz. İlk senaryo kullanırsanız oluşur mutlak zaman aşımı. Mutlak zaman aşımı ile kimlik doğrulaması biletinin süresi, zaman aşımı değeri sona erer. Örneğin, bir zaman aşımı 20 dakika ve kullanıcı ayarlayın site 2: 00'dan yapılan ziyaretleri. Kullanıcı oturum açma sayfasına yeniden, yönlendirilir Kullanıcı site 2: 20 pm sonra ziyaret.

Kayan zaman aşımı, kullanıyorsanız Senaryo biraz daha karmaşıktır. Tanımlama bilgisi ve sonuçta elde edilen bilet Yarı süresi sona erme zamanını sonra kullanıcı siteyi ziyaret ederse güncelleştirildi. Örneğin, 20 dakikalık bir süre sonu kayan zaman aşımı kullanılarak ayarlanır. Kullanıcı site 2: 00'dan 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ı sitesini ziyaret 2: 10 pm sonra güncelleştirilir. Kullanıcı 2: 09 pm sitesini ziyaret ederseniz, bilet çünkü güncelleştirilmez yarısı sona erme süresi geçmemiş. Kullanıcı siteyi ziyaret 2: 21 pm at sonra 12 dakika bekler bilet süresi. Kullanıcı oturum açma yönlendirilir. Sayfa.

Formları günlüğe kaydetmek için bu tür bir sorun yaklaşan yollarından biridir. kimlik doğrulama tanımlama bilgisi ve bilet bilgileri. Bu şekilde, görebilirsiniz IIS ve değerlerin ne olduğundan tanımlama bilgisi alındı. Yazarak bunu yapmak için bir HttpModuleve daha sonra bu modül istek ardışık düzene takma. Bilgi almak için uygulamanızın kodunu değiştirmek gerekmez, gerekir.

Ekli örnek Microsoft .NET Framework 1.1 ve .NET Framework 2.0 çalışır ve vardır tüm yorumlar. Örnek aşağıdaki dosyaları içerir:
  • FormsAuthEvents.cs: Application_BeginRequest olay şekilde bağlar ve IHttpModule uygulayan sınıf.
  • FormsAuthInfo.cs: tanımlama bilgisi alır sınıf ve Formlar kimlik doğrulama bileti şifresini çözer. Ayrıca uygulamanın denetler Web.config dosyası, forms kimlik doğrulaması sağlamak için etkinleştirilir.
  • FormsAuthConfig.cs: bilgileri okuyan sınıf FormsAuthLogger.config dosyası.
  • Log.cs: bir stringbuilder kabul eder ve değerleri Yazar dosya Günlük dosyası için.
  • FormsAuthLogger.config: salt okunur xml dosyası Log.cs dosyası. Bu Dosya yerleşik dll ile yerdeyse klasöründe olması gerekir. Dosya izin verir aşağıdakileri yapılandırın:
    • IP filtre: tarafından veri yakalama filtre uygulayabilirsiniz İstemci IP. Bu şekilde olduğu bilinen bir istemciden gelen istekleri yalnızca oturum açabilir sorunu yeniden oluşturma. Bu işlem günlüğünün boyutunu azaltır.
    • Yakalama türü: Bu dosyanın kaydedileceği konumu belirtir. Temporary asp.net Files klasörünün varsayılan değerdir, ancak bunu kaydetmek çalışan işlem hesabı için yazma olanağı herhangi bir yere sahip olduğu sürece klasör.
Not Kod içinde sağlanan için ben bir karşıdan yükleme bağlantısını sağlayan FormsAuthLogger.zip dosyası.

Burada ana alanları in üzerine:
  1. IHttpModule arabirimini uygulayan bir sınıf oluşturun.
    public class FormsAuthEvents : IHttpModule 
    {
    		…code…
    }
  2. Bakmak istediğiniz olayı oluşturan bağlayın. Bu örnekte, Biz Application_BeginRequest olay kullanıyorsunuz. Bu şekilde her isteğin araştırabilir ve belirlemek tanımlama bilgisi varsa form kimlik doğrulaması tanımlama bilgisi ve günlük FormsAuthenticationTicket vardır.
    public void Init(HttpApplication application) 
    {
    	//Wire up the BeginRequest event
    	application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
    }
  3. Application_BeginRequest olay uygular.
    private void Application_BeginRequest(Object source, EventArgs e)
    {	
       …code to log the ticket…
    }
    
  4. Formlar kimlik doğrulama tanımlama bilgisi almak ve daha sonra şifresini çözmek onu.
  5. Değerleri günlüğe yazılır. Aşağıdaki oturum açmayı önerir Ayrıca form bilgileri. Bu yardımcı olacaktır formlarınızı satır Gerekirse, IIS için kimlik doğrulama bilgilerini kaydeder:
    • Tarih: gelen istek olduğunda görmenize olanak sağlar .
    • RequestType: Get isteği olup olmadığını veya gösterir. Deftere naklet.
    • url: desenini gösterir Taşına sorunu için istek sayısı.
    • Başvuran
    • ClientIP: Belirli bir istek TIES İstemci.

Her zamanki gibi konularda fikirler istediğiniz göndermek çekinmeyin Gelecekteki sütunları veya Knowledge Base kullanarak ele Bunun için sor Form.

Özellikler

Makale numarası: 910439 - Last Review: 16 Aralık 2012 Pazar - Gözden geçirme: 3.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 2.0
Anahtar Kelimeler: 
kbtshoot kbiis kbcode kbasp kbmt KB910439 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir: 910439

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com