SORU
13 Mart 2012, Salı


Uygulama havuzu kimliğini kullanarak birincil kaybeder uygulama simgesi IIS?

(Bu belirsiz bir sorun hakkında bir soru. İlgili tüm verileri sunmaya çalışırım, birisi yararlı bilgiler; uzun açıklama için özür vardır umarım.)

Web uygulamamız

Bir biz var .4 web NET uygulama IIS 7.5 Active Directory ve SQL Server veritabanına erişmek çalışıyor.

Bu web uygulaması sanal 'uygulama havuzu kimliği', * ' 7* uygulamanın uygulama havuzu Kimliği ayarı. altında çalışıyor Kısa ve öz bir açıklama sanal kimlikler bulunabilir a StackOverflow answer ve blog yazısı için, hangi anlamına gelir: bir uygulama havuzu kimliği sadece ek bir grup eklenir web uygulamanın çalışan süreçleri olan bir çalışan olarak 'şebeke servisi'. Ancak, one source belli belirsiz "Ağ Hizmeti ve Applicationpoolıdentity iis.net site belgeleri yayımlamak olmayan farklılıklar var." öneriyor Yani sanal bir kimlik, sadece ek bir grup daha olabilir.

Seçtiğimiz için kullanmak Applicationpoolıdentity karşıt olarak, Network Service, çünkü oldu varsayılan olarak IIS 7.5 (bkz, örneğin, here her Microsoft'un önerisi: "Bu kimlik sağlar yöneticilere belirtmek izinleri ile ilgili tek kimlik altında hangi uygulama havuzu çalışıyor, böylece artan sunucu güvenlik." (processModel Element for add for applicationPools [IIS 7 Settings Schema]) "Uygulama Havuzu Kimlikleri", "çalışan IIS uygulamaları daha güvenli ve güvenilir. hale getiren yeni ve güçlü bir yalıtım özelliği vardır "(IIS.net article "Application Pool Identities")

Uygulama Tümleşik Windows Kimlik Doğrulaması, ama <identity impersonate="false"/> son kullanıcının kimliğini çok kullanır ama sanal uygulama havuzu kimliği kodumuzu çalıştırmak için kullanılır.

Bu uygulama, Active Directory System.DirectoryServices sınıfları kullanarak, yani varsayılan API sorgular. Çoğu yerde bu ek kullanıcı adı/şifre veya diğer kimlik bilgilerini belirtmeden yapılır.

Bu uygulama, SQL Server bir veritabanı bağlantı dizesi Integrated Security=true kullanarak bağlanır. Eğer veritabanı yerel, sonra IIS APPPOOL\OurAppPoolName veritabanına bağlanmak için kullanılan görüyoruz; eğer veritabanı uzak ise, o zaman makine OURDOMAIN\ourwebserver$ kullanılan hesap.

Bizim sorunlarımız

Biz düzenli olarak çalışan bir yükleme aşağıdaki yollardan birinde başarısız başlar, sorunları var.

  • Veritabanı uzak bir sistemde, o zaman veritabanı bağlantısı başarısız başlar: "kullanıcısı için oturum Açma başarısız oldu 'ANONİM oturum AÇMA NT AUTHORİTY\'. Sebep: alt yapısı hata ile başarısız oldu Belirteci tabanlı sunucu erişim doğrulama. Önceki hata olup olmadığını denetleyin." Önceki hata "Hata: 18456, Severity: 14, State: 11." Şimdi OURDOMAIN\ourwebserver$ artık kullanılmaz gibi görünüyor, ama bunun yerine, anonim erişim denenir. (Bu sorun UAC kapalı iken meydana gelen ve uzak UAC açıldıktan sonra gitti anekdot kanıtlar var. Ama UAC değiştirme, yeniden başlatma gerektirir unutmayın...) benzer Bir sorun IIS.net thread "use ApplicationPoolIdentity to connect to SQL" özellikle one reply bildirilir.

  • ADSI ile Active Directory işlemleri Sistemi.DirectoryServices) 0x8000500C hata ile başarısız start ("Bilinmeyen Hata"), 0x80072020 ("işlem hatası oluştu."), ya 0x200B ("belirtilen dizin hizmeti özniteliği veya değeri yok").

  • Internet Explorer uygulaması için oturum açma başarısız, 401 hatası HTTP ile başlar. Ama eğer IIS biz o Müzakere önce NTLM koyarsanız sonra tekrar çalışır. (REKLAM için erişim NTLM Kerberos ancak gerekli olduğunu unutmayın.) Benzer bir sorun IIS.net thread "Window Authentication Failing with AppPool Identity" bildirilir.

Hipotez ve geçici çözüm

En azından REKLAM ve oturum açma sorunları her zaman Network Service için Applicationpoolıdentity uygulama havuzu geçiş yaparken uzağa gitmek gibi görünüyor. (one report bunu doğrulayan bulduk.)

Sayfa "Troubleshooting Authentication Problems on ASP Pages" bazı ilgili öneriler için primer vs sekonder belirteçleri ve ne buluyorum teşvik eden bağlar ilk iki bizim hataları: bahseder NT AUTHORITY\ANONYMOUS LOGON erişim ve REKLAM hataları 0x8000500C ve "belirtilen dizin hizmeti özniteliği veya değeri yok".

(Aynı sayfa da ADSI şema önbelleği sorunları bahseder, ama bu konu hakkında bulabildiğimiz her şeyi eski. Şimdi bu alakasız olarak görüyoruz.)

Yukarıdaki dayanarak, mevcut çalışmahipotezsanal uygulama havuzu kimliği altında çalışan, sadece bubizim uygulama (IIS? web alt işlem?) aniden kaybeder onun birincil simgeIIS sadece ikincil bir simge , yani, tüm Active Directory access ve SQL Server anonim, yukarıdaki hataları her yol yapılır.

Şimdilik Network Service için Applicationpoolıdentity geçmek istiyoruz. Umarım bu yukarıdaki tüm sorunları yok eder. Ama emin değiliz; ve mümkünse geri dönmek istiyoruz.

Bizim soru

Yukarıdaki hipotez doğru, ve, bu, IIS bir hata değildir eğer öyleyse/Windows/.NET? Hangi şartlar altında bu birincil simge kaybı oluşuyor?

CEVAP
21 Mart 2012, ÇARŞAMBA


Microsoft Destek ile sorunu Microsoft Knowledge Base article KB2545850 açıklanan karşılaştık öğrendim. Bu sadece Applicationpoolıdentity kullanıldığında oluşur. Makine hesabı parola değiştirildikten sonra çok kolay, yani oluşur, varsayılan olarak, otomatik olarak her 30 günde bir olur) ve sonra da IIS (iisreset ile örneğin) yeniden başlatılır. Sorun bir yeniden başlatma sonra, Microsoft ve gözlemlerimize göre gider unutmayın.

Microsoft'a göre mümkünse Windows/IIS bu duruma soktu olmadığını kontrol edin.

Microsoft bir düzeltme, bu KB makalesi için eklenmiş. Düzeltme resmi bir doğuma alınır zaman göstergesi yok, ve düzeltmeyi zaten 10 aylık. Bizim özel durumda, Açarsa yerine geçmek için karar verdik.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Call Me Howard

    Call Me Howa

    18 AĞUSTOS 2012
  • The Amazing Atheist

    The Amazing

    20 Kasım 2006
  • Visual Life

    Visual Life

    3 Temmuz 2006