Aracılığıyla paylaş


Windows Tümleşik Kimlik Doğrulaması için tanılama sayfaları sorunlarını giderme

Windows Tümleşik Kimlik Doğrulaması hata senaryolarında sorun giderme, özellikle Kerberos kimlik bilgisi temsilcisiyle uğraşırken zor olabilir. Internet Information Services'ın (IIS) Windows Tümleşik Kimlik Doğrulaması ile çalışması ve isteğe bağlı olarak kimlik bilgisi temsilcisini kullanması için doğru yapılandırmaya sahip olduğunuzdan emin olmak için ayrıntılı bir denetim listesi olsa da, bu makale özellikle aşağıdaki senaryoları hedefler:

  • hedef web sitenizde istemci bilgisayardan oturum açabilirsiniz, ancak kimlik doğrulama mekanizması olarak NTLM veya Kerberos kullanıp kullanmadığınızdan emin değilsiniz.
  • Hedef web sitenizde oturum açabilirsiniz, ancak yalnızca bir kullanıcı adı ve parola birleşimi girdikten sonra oturum açmanız istenir.
  • Hedef web sitenize ön uç sunucusundan erişebilirsiniz, ancak ön uç sunucunun kimliği doğrulanmış kullanıcının kimlik bilgilerini kullanarak arka uç HTTP uç noktasını çağırmasını gerektiren bir eylem başlattığınızda başarısız olur.

Bu makalenin amaçları doğrultusunda aşağıdaki düzeni göz önünde bulundurun:

  • İstemci 1 , varsayımsal kullanıcının tüm bağlantı girişimlerini başlatacağı etki alanına katılmış iş istasyonu veya dizüstü bilgisayardır.

  • Web-serv1, Windows Tümleşik Kimlik Doğrulaması kullanan ve bir hizmet hesabının kimliğini kullanarak çalışan bir ASP.NET (.NET Framework) web sitesini barındıran ön uç IIS sunucusudur: domain\serviceaccount.

  • Web-serv2, ön uç uygulaması için API uç noktalarını kullanıma sunan bir ASP.NET (.NET Framework) sitesini de barındıran arka uç web sunucusudur. Ayrıca, Windows Tümleşik Kimlik Doğrulaması kullanan ve uygulama havuzu kimliği olarak domain\serviceapiaccount kullanan bir uygulama havuzunda yürütülen isteklere izin verecek şekilde yapılandırılır.

İş istasyonu, Web-serv1 ve Web-serv2 düzenini gösteren ekran görüntüsü.

Bu senaryolar için veri toplamayı kolaylaştırmak ve Fiddler veya WireShark gibi dış veri toplama araçlarına güvenmemek için (üç bilgisayar arasındaki bağlantılar HTTPS kullanabileceğinden ve bu nedenle aralarındaki tüm alışverişler şifre olacağından), IIS'de Windows Tümleşik Kimlik Doğrulaması sorunlarını gidermek için ASP.NET Kendi İçinde Bulunan Sayfalar'daki iki bağımsız tanılama sayfasını kullanın.

Sorun giderme sayfaları

İki sayfa ASP.NET Web Forms kodlanmıştır. Bunlar, derlemeye veya dağıtıma gerek kalmadan, sorun gidermeye çalıştığınız web uygulamasının köküne kopyalanacak bir dosyada sayfanın kodunu ve işaretlemesini paketlemek için tasarlanmıştır. Sayfalar şunlardır:

  • WhoAmI.aspx - Bu sayfa, kimlik doğrulamasıyla ilgili bilgilerin dökümünü alma olanağı sağlar:

    • Hedef siteye erişmek için kullanılan kimlik doğrulama yöntemi. Yöntem, Windows Tümleşik Kimlik Doğrulaması için Anlaşma sağlayıcısını temel alırsa, kullanıcının kimliğini doğrulamak için Kerberos veya NTLM kullanılıp kullanılmadığı gösterilir.

    • Siteyi barındıran uygulama havuzunu çalıştıran hesabın kimliği.

    • Kimliği doğrulanmış kullanıcının kimliğe bürünme düzeyi. Kimlik doğrulaması için Kerberos kullanılırsa ve kısıtlanmamış kimlik bilgisi temsilcisine izin verilirse, kimliğe bürünme düzeyi temsilci olarak işaretlenir. Aksi takdirde, kısıtlanmış temsil veya basit kimliğe bürünme durumunda kimliğine bürünme olarak işaretlenir.

    • Kimliği doğrulanmış kullanıcının kimliği ve kullanıcının ait olduğu gruplar.

    • Sayfanın kodunu yürüten hesabın kimliği ( kimliğe bürünme ayarlarına bağlı olarak kimliği doğrulanmış bir kullanıcı veya uygulama havuzu kullanıcısı olabilir).

    • IIS Sunucu Değişkenlerinden kurtarılan WhoAmI.aspx sayfasına gelen istekler için istek üst bilgilerinin tüm değerleri.

      Kimlik doğrulama bilgileri ve kimlik içeren Kimim Sayfasını gösteren ekran görüntüsü.

  • ScrapperTest.aspx - Bu sayfa , ön uç sunucusundan gelen isteklerin arka uç sunucusundaki herhangi bir URL'ye yönlendirilmesine izin veren WhoAmI.aspx sayfasıyla çalışmak üzere yapılır. Sayfa, kullanıcının şunları yapmasını sağlayan bir ui arabirimi sunar:

    • Sayfanın yüklemeyi denemesi gereken arka uç sunucu kaynağının istenen URL'sini girin.

    • ScrapperTest.aspx sayfasını yüklerken kimliklerinin doğrulanıp doğrulanmadığını ve kimliklerinin doğrulanıp doğrulanmadığını belirleyin.

    • Kullanıcının kimliğinin doğrulandığı senaryoda, url metin kutusunda belirtilen arka uç kaynağını yüklemeye çalışırken kullanıcının kimlik bilgilerini yeniden kullanma girişimine izin veren bir onay kutusu vardır.

      ScrapperTest sayfasını gösteren ekran görüntüsü.

Dağıtma

her iki sayfa da bağımsız olduğundan, gereken tek şey şunlardır:

  1. GitHub deposundan sayfaları indirin.
  2. WhoAmI.aspx sayfasını veya her iki sayfayı iis içinde çalışan hedef web uygulamalarınızın köküne kopyalayın.
  3. Hangi sayfaya erişmek istediğinize bağlı olarak sitenizin / WhoAmI.aspx veya /ScrapperTest.aspx ekleyen URL'sine bir istekte bulunun.

Kullanım

İlk kullanım senaryosu, IIS'de barındırılan belirli bir web sitesine veya web uygulamasına erişmek için hangi kimlik doğrulama yönteminin kullanıldığını belirlemeye çalışmaktır. Bunun için, daha önce siteye dağıttığınız WhoAmI.aspx sayfasına isteklerde bulunabilirsiniz.

  • İlk istekte, sayfa kimlik doğrulama bilgilerini görüntüler. Windows Tümleşik Kimlik Doğrulaması için Anlaşma sağlayıcısı kullanılırsa, kullanılan kimlik doğrulama protokollerini de listeler: Kerberos veya NTLM.

  • Negotiate'un Windows Tümleşik Kimlik Doğrulaması sağlayıcısı olarak kullanıldığı bir senaryoda sonraki istekler yalnızca kimlik doğrulama türünün yanında Oturum Tabanlı etiketini görüntüler. Daha fazla bilgi için bkz. İstek Tabanlı ile Oturum Tabanlı Kerberos Kimlik Doğrulaması (veya AuthPersistNonNTLM parametresi) karşılaştırması.

  • Uygulama havuzu kullanıcısı, kimliği doğrulanmış kullanıcı, yürütme kullanıcı ayrıntıları ve gelen isteğin üst bilgileri gibi diğer tüm kimlik doğrulama bilgileri her istekte görüntülenir.

WhoAmI.aspx sayfasında da altta küçük bir form görüntülenir. Bu form, bu tür istekleri gönderirken tarayıcının nasıl davrandığını test etmek için sunucuya istek göndermenize POST olanak tanır. Sayfa 60 saniyeden uzun bir süre boşta kalırsa, sayfayı tarayıcıya indirmek için kullanılan ve sunucu tarafından kimliği doğrulanan İletim Denetimi Protokolü (TCP) bağlantısı işlem yapılmadığı için kesilir. Bu nedenle, bir POST istekte bulunursanız yeni bir TCP bağlantısı açılır ve yeniden kimlik doğrulaması yapmanız gerekir. İsteklerle ilgili bir incelik POST vardır:

  1. Tarayıcı önce HTTP POST isteği üst bilgilerini gönderir.
  2. Ardından, sayfada görüntülenen HTTP formundaki çeşitli giriş alanlarından yakalanan bilgileri içeren isteğin gövdesini POST yayınlar.

Tarayıcı isteğin POST üst bilgilerini gönderdikten sonra beklemez, ancak bunun yerine gövdeyi doğrudan kimliği doğrulanmamış bir bağlantıya gönderirse, aşağıdaki sorunlar oluşabilir:

  • Sunucu istek üst bilgilerini alır POST ve bağlantının kimliği doğrulanmamış olduğundan (Windows Tümleşik Kimlik Doğrulaması veya başka bir sınama tabanlı kimlik doğrulaması kullanıldığı varsayıldığında), uygun kimlik doğrulama yanıtı HTTP üst bilgisi (WWW-Authenticate) ile bir 401 yanıtı gönderir.
  • Bu süre boyunca tarayıcı, sunucudan POST 401 yanıtını almadan önce istek gövdesini zaten göndermiştir.
  • Ardından sunucu, daha önce istemciye kimlik doğrulaması gerektiğini belirttiği bir bağlantı üzerinde kimliği doğrulanmamış POST bir istek gövdesi alır.
  • Bu, temel alınan TCP bağlantısının sunucu tarafından kesilmesine ve tarayıcının "Web Sayfası kullanılamıyor" iletisini görüntülemesine neden olur.

ScrapperTest.aspx sayfası, ön uç sunucudan arka uç sunucu uç noktasına kimlik bilgisi senaryolarının temsilini test etmek için kullanılır. Sayfa istemci tarayıcısından istendikten sonra aşağıdakilere izin veren bir kullanıcı arabirimi sunar:

  • Ön uç sunucusunun bağlanması gereken arka uç uç uç URL'sini girme.
  • Ön uçta kullanıcının kimliğinin doğrulandığını ve ön uç sunucusuna bağlanmak için hangi kullanıcı adının kullanıldığını doğrulama.
  • Kimliği doğrulanmış kullanıcının kimlik bilgilerinin istekle arka uç sunucusuna geçirilmesi gerekip gerekmediğini belirleme ( kimlik doğrulamasının ScrapperTest.aspx sayfasına erişmek için kullanılması durumunda) (kimliğe bürünme ve temsilci seçme mümkünse).

SayfaYı Kazı düğmesi seçildikten sonra, ScrapperTest.aspx sayfasının kodu belirtilen hedef URL için bir GET istek gönderir. Kimlik Bilgilerini Kullan onay kutusu işaretliyse ve belirtilen arka uç uç noktasına erişmek için kimlik doğrulaması gerekiyorsa, isteği yapmak için kimliği doğrulanmış kullanıcının kimlik bilgileri de kullanılır. İstek başarılı olursa sonuç, alınan yanıtın ham HTTP çıkışı olarak sayfanın metin alanı denetiminde görüntülenir.

ScrapperTest.aspx sayfasını ve WhoAmI.aspx sayfasını arka uç sunucusunda bağlantı kurulacak olan ASP.NET uygulamasının içine yerleştirmek için öngörülen bir kullanım senaryosudur. Bu nedenle, ScrapperTest.aspx sayfası tarafından kurtarılan HTTP yanıtı, arka uçta yürütürken WhoAmI.aspx sayfasının HTML çıkışı olur. Bu çıkış daha sonra isteğin arka uçta nasıl doğrulandığını ve hangi hesapların kullanıldığını anlamak için değerlendirilebilir.

Daha fazla bilgi

Kerberos kullanarak Windows Tümleşik Kimlik Doğrulaması kurulumunu daha fazla anlamak için bkz: