401 - Sunucu 2008 R2 IIS 7.5 Üzerinde Yetkisiz


20

Server 2008 IIS 7.5 kutusuna dağıtılan bir web uygulamam var.

Uzaktan bakıldığında bu hatayı veriyor: 401 - Unauthorized: Access is denied due to invalid credentials. (remote = aynı LAN üzerindeki masaüstü bilgisayarlar)

Farklı tarayıcılar kullanan birkaç uzak istemciyi denedim, hepsi aynı sonuç. (IE, FF ve Chrome)

Uygulamanın sunucunun masaüstünden vurulması kusursuz çalışır . Ancak sunucu masaüstünde Firebug'u denemedim. Hala 401 durum kodu veren ancak içeriği yine de döndüren varsayalım. Bkz. Güncelleme # 2.

Uygulama Anonim Kimlik Doğrulama kullanıyor.

Uygulama MVC çerçevesi kullanılarak .NET 4.0 Asp.Net'te yazılmıştır.

Statik içerik iyi çalışıyor, örnek: http://server.com/content/image.jpg

Sysinternals procmonher istek için şu 2 sonucu döndürür: HIZLI GİRİŞ DEVRE DIŞI ve PATH BULUNAMADI.

Aynı sunucuda iyi çalışan 2 MVC uygulamam daha var. Klasörlerdeki güvenliği kontrol ettim ve hepsi uyuşuyor.

Uygulama bir Server 2008 IIS 7.0 kutusunda iyi çalışır.

Bununla ilgili sunucudaki Olay günlüğünde hiçbir şey görünmüyor.

Saçımı buradan çıkarırsanız, sorun giderme ipuçları var mı?

GÜNCELLEME # 1 : Kazdıkça bu daha fazla WTF kazanıyor.

IIS Yöneticisi -> Hata Sayfaları -> Özellik Ayarlarını Düzenle seçiminde Uygulamayı tıklarsam Detailed Errors, uygulama uzaktan çalışır. Bunu bırakmamak, bu yüzden problem henüz çözülmedi, sadece daha kafa karıştırıcı.

GÜNCELLEME 2 : Firebug kullanarak Durumun hala olduğunu görüyorum 401 Unauthorized, ancak Yanıt uygulamanın doğru HTML'sini döndürüyor.

GÜNCELLEME # 3 Başarısız İstek İzleme ile uğraşırken, 401'e neden olan UYARI İstek İzleme:

ModuleName ManagedPipelineHandler
Notification 128
HttpStatus 401 
HttpReason Unauthorized 
HttpSubStatus 0 
ErrorCode 0 
ConfigExceptionInfo  
Notification EXECUTE_REQUEST_HANDLER 
ErrorCode The operation completed successfully. (0x0)

Güncelleştirme # 4 Düzenli IIS günlüğü şunu gösteriyor:

#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2010-07-20 19:17:22
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken
2010-07-20 19:17:22 10.10.1.10 GET /Purchasing/Home - 80 - 10.10.1.12 Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US;+rv:1.9.2.6)+Gecko/20100625+Firefox/3.6.6 401 0 0 4414

Sunucuda Başarısız İstek İzleme'yi çalıştırmayı ve uzak makineden uygulamaya erişmeyi denediniz mi? Bir arıza varsa, sebebini görmelisiniz.
Vivek Kumbhar

@vivek en son güncellememi gör
mxmissile

ARRG !!! Ama yine bununla! Arama için 2 saat boşa harcandı Html.RenderAction, daha sonra Razor'un kullandığını fark etti, Html.Actionböylece ilk aramalarım boş çıktı.
mxmissile

Birkaç yıl oldu, tahmin et ne oldu? Sadece bu sabah bu saatte 3 saat israf! Ne zaman öğreneceğim?!?!?!
mxmissile

Yanıtlar:


19

Bazen bir adım geri atmak zorundasınız ... Bunun sebebi, Html.RenderAction()benim görüşüme göre, [Authorize]özellik ile işaretlenmiş bir eylem yöntemi olarak adlandırılan bir şeydi .


1
Bu benim sorunum, bir panda (değil ben) yumruk için sinir bozucu oldu. Teşekkürler mxmissile.
Khalid Abuhakmeh

4

Yerel olarak çalıştığından ancak uzaktan çalışmadığından, anonim kullanıcı hesabının bir şeye erişimi olmadığı gibi geliyor, ancak Windows kullanıcınız var. Bunu kanıtlamak için web sitesi için Windows Kimlik Doğrulaması'nı kapatın ve yerel olarak kırılıp kırılmadığına bakın.

Ne olursa olsun, uygulama havuzu kimliğiniz yerine web sitesi kimliğiniz olarak çalışıyor olabilir, aksi takdirde yerel ve uzaktan bozulur. Sitelerimi uygulama havuzlarıyla 1'e 1 eşleştirmeniz veya yüksek düzeyde güvenilir bir ortamınız varsa, önerim anonim kullanıcı hesabını uygulama havuzu kimliğini kullanacak şekilde ayarlamaktır. O zaman korumak için 2. bir kullanıcı için endişelenmenize gerek yok.

İşlem gezgininden bahsettiniz. Bu, çalışan bilgileri bulmak için iyidir, ancak erişim reddedilen hataları ortaya çıkaracak araç processmon'dur (ayrıca sysinternals'tan). Deneyin, kopyalayın ve yakalayın, ardından 'reddedildi' kelimesini arayın. Diskte erişim reddedilen sorunları açmalıdır.


4

Birinden `` HttpUnauthorizedResult '' olarak ayarlanan özel yetki için bir filtreden AuthorizeAttributeve bir veya daha fazla OnAuthorizationyönteme çağrıdan oluşan bir filtreniz olduğunda da aynı davranışa sahip AuthorizationContext.Resultolursunuz.


4

Nedense bu sorunumu çözdü.

  1. IIS'de siteyi tıklayın.
  2. Çift tıklama kimlik doğrulaması
  3. Sağ tıklayın ve Gelişmiş ayarlar'ı seçin
  4. "Çekirdek modu kimlik doğrulamasını etkinleştir" seçimini kaldırın

2

Yetkilendirme kuralları altındaki ayarları kontrol ettiniz mi? Bu sayfaya herkes erişebiliyorsa (hedefiniz gibi görünüyor), kullanıcılar sütununun altında "Tüm Kullanıcılar" içeren bir "İzin Ver" kuralına sahip olduğunuzdan emin olun.

Ardından "Kimlik Doğrulama" da çakışma olmadığından ve yalnızca Anonim Kimlik Doğrulamanın etkinleştirildiğinden emin olun.

Umarım yardımcı olur.


1
İzin Ver - Tüm Kullanıcılar - Devralınan
mxmissile
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.