IIS Express Windows Kimlik Doğrulaması


245

Silverlight uygulaması barındırmak için VS2010 ile IIS Express kullanmaya çalışıyorum. Uygun yapılandırma ayarlarının değiştirilmesine izin vermek için applicationhost.config dosyamı değiştirdim. Web.config dosyamda aşağıdakiler var:

<location path="">
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication enabled="false" />
        <windowsAuthentication enabled="true" />
      </authentication>
    </security>
  </system.webServer>
</location>

Kimliği doğrulanmıyorum ve alan adı hizmet çağrım kullanıcı olarak boş bir kayıt döndürüyor. VS2010 SP1 BETA'yı yükledikten sonra bu işe başlayabildim ama bunu yalnızca IIS Express ile çalışmak için almaya çalışıyorum.

Windows Kimlik Doğrulaması'nın IIS Express ile çalışmasını nasıl sağlayabilirim? Kaçırdığım bir yapılandırma ayarı var mı?

Yanıtlar:


276

seçenek-1 :

\My Documents\IISExpress\config\applicationhost.configdosyayı düzenleyin ve windowsAuthentication'ı etkinleştirin, yani:

<system.webServer>
...
  <security>
...
    <authentication>
      <windowsAuthentication enabled="true" />
    </authentication>
...
  </security>
...
</system.webServer>

seçenek-2 :

\ Belgelerim \ IISExpress \ config \ applicationhost.config dosyasında windowsAuthentication bölümünün kilidini açın

<add name="WindowsAuthenticationModule" lockItem="false" />

Gerekli kimlik doğrulama türleri için geçersiz kılma ayarlarını 'İzin Ver' olarak değiştirin

<sectionGroup name="security">
    ...
    <sectionGroup name="system.webServer">
        ...
        <sectionGroup name="authentication">
            <section name="anonymousAuthentication" overrideModeDefault="Allow" />
            ...
            <section name="windowsAuthentication" overrideModeDefault="Allow" />
    </sectionGroup>
</sectionGroup>

Uygulamanın web.config dosyasına aşağıdakileri ekleyin

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
      <security>
        <authentication>
          <windowsAuthentication enabled="true" />
        </authentication>
      </security>
    </system.webServer>
</configuration>

Aşağıdaki bağlantı yardımcı olabilir: http://learn.iis.net/page.aspx/376/delegating-configuration-to-webconfig-files/

VS 2010 SP1'i yükledikten sonra, Windows kimlik doğrulamasının çalışması için 1 + 2 seçeneğinin uygulanması gerekebilir. Ayrıca, IIS Express applicationhost.config dosyasında anonim kimlik doğrulamasını false olarak ayarlamanız gerekebilir:

<authentication>

            <anonymousAuthentication enabled="false" userName="" />

VS2015 için, IIS Express applicationhost yapılandırma dosyası burada bulunabilir:

$(solutionDir)\.vs\config\applicationhost.config

ve <UseGlobalApplicationHostFile>proje dosyasındaki seçenek varsayılan veya çözüme özgü yapılandırma dosyasını seçer.


Teşekkürler. Ama yukarıdaki seçenekleri denedim. Ancak yine de Windows Kimlik Doğrulaması'nı kullanamıyorum. Sanırım sadece bu işlevi almak için VS2010 / SP1 beklemek zorunda kalacak.
Mark

3
ikinci seçenek benim için çalıştı. Bu gönderiyi bulmak biraz zaman aldı!
TodK

VS2010 sp1 çıktığı için bu soru artık geçerli değil. Ben sp1 yüklemeden işe almak için çalışıyordu. Tahminimce sp1 ilk anlayamadığım bir şey yapmak için bir şeyler yapıyor. Devam edip bu cevabı doğru olarak işaretleyebilirim, ancak sp1'in yüklenmemesi ön koşul olduğundan gerçekten değil.
Mark

1
Teşekkürler dostum! NTLM, anonim kimlik doğrulamasını devre dışı bırakarak çalıştı.
Rob Angelier

4
VS2015'te IIS Express yapılandırması çözüm yapısına taşındı, özellikle $ (SolutionDir) \. Vs \ config \ applicationhost.config ne yazık ki MyDocuments \ IISExpress altındaki mevcut yapılandırmayı dikkate almıyor, bu nedenle herhangi bir özelleştirmenin okunması gerekecek.
Tedford

401

Visual Studio 2010 SP1 ve 2012, köşeli parantez düzenleme gereksinimini ortadan kaldıran IIS Express desteği ekledi.

  1. Henüz yapmadıysanız, web aromalı bir projeye sağ tıklayın ve "IIS Express Kullan ..." seçeneğini seçin.
  2. Tamamlandığında, web projesini seçin F4ve Özellikler paneline odaklanmak için düğmesine basın .
  3. "Windows Kimlik Doğrulaması" özelliğini Etkin ve "Anonim Kimlik Doğrulaması" özelliğini Devre Dışı olarak ayarlayın.

resim açıklamasını buraya girin

Bu çözümün vikomall'ın seçeneklerinden daha üstün olduğuna inanıyorum.

  • Seçenek # 1, tüm IIS Express siteleri için genel bir değişikliktir.
  • Seçenek # 2, web.config dosyasında geliştirme hamlesini bırakır.
    • Ayrıca, IIS sunucunuzun applicationHost.config dosyasındaki "kilidini aç" yordamını izlemediğiniz sürece IIS 7.5'e dağıtıldığında büyük olasılıkla hataya neden olur.

Yukarıdaki UI tabanlı çözüm, IIS Express'in applicationHost.config dosyasında uygulamaya dokunmadan bırakılan siteye özgü konum öğelerini kullanır.

Daha fazla bilgi için: http://msdn.microsoft.com/en-us/magazine/hh288080.aspx


5
Neyi kaçırdığımı vurgulamak için - özellikler bağlam menüsü ve Alt-Enterkısayol, Windows kimlik doğrulamasının etkin olup olmadığını değiştirmenize izin veren özellikler bölmesi ayrıntılarını tamamen desteklemez. F4Özellikleri görmek için özellikler bölmesini kullanın veya tıklayın.
Kaleb Pederson

Bu makaleyle başlamadan önce birkaç gün boyunca bu görevle mücadele ettim: msdn.microsoft.com/en-us/library/gg703322%28VS.98%29.aspx Temel olarak, orijinal yayındaki her şeyi göz ardı edin, bir " virgin "applicationhost.config ve sadece bu cevaba göre ayarları etkinleştirin. Sonunda Windows kimlik doğrulaması alıyorum! Teşekkürler!!
DaveN59

IISExpressWindowsAuthentication ayarını .csproj'daki 'etkin' ayarından devre dışı 'olarak değiştirir. <IISExpressWindowsAuthentication> devre dışı </IISExpressWindowsAuthentication>
Cameron Taggart

7
Bu 2 seçenek gri ve benim için devre dışı bırakıldı. Neden olduğu hakkında bir fikrin var mı?
bız

1
IIS Express Config'inizde bu 2 seçenek gri olduğundan, <section name = "anonymousAuthentication" overrideModeDefault = "İzin Ver" /> <bölüm adı = "windowsAuthentication" overrideModeDefault = "İzin Ver" /> overrideModeDefault = "İzin Ver "ve onlar utanç verici olacak
Micah Armantrout

9

Booij boy'un cevabına dayanarak, Denetim Masası -> Programlar -> Windows özelliklerini aç veya -> İnternet Bilgi Servisleri -> World Wide Web Services -> Güvenlik'te kontrol edin.

Ayrıca, firefox veya internet explorer kullanırken büyük bir fark var gibi görünüyor. "Windows kimlik doğrulaması" etkinleştirildikten sonra benim için ama sadece IE'de çalışır.


2
Ve firefox'ta çalışmaya başlamak için: markmonica.com/2007/11/20/…
bees73


5

Bu harika yanıtlara ek olarak, bir IISExpress geliştirici ortamı bağlamında ve kötü bilinen "system.web/identity@impersonate" hatasını engellemek için aşağıdaki ayarın applicationhost.config dosyanızda olmasını sağlayabilirsiniz. .

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
</configuration>

Bu, geliştirme ve test sırasında daha fazla esneklik sağlar, ancak bunu yapmadan önce bu ayarı bir üretim ortamında kullanmanın sonuçlarını anladığınızdan emin olun.

Yardımcı Mesajlar:


Bu tamamen kazara indi, ama işe yaradı :-)
joshmcode

2

IIS Yöneticisi'nde sitenizi tıklayın. "İçerik görünümünde" yerine "özellik görünümünde" olmanız gerekir

"Özellik görünümü" nin IIS bölümünde "kimlik doğrulama" olarak adlandırılan özelliği seçin ve üzerine tıklayın. Burada Windows Kimlik Doğrulaması'nı etkinleştirebilirsiniz. Bu da web.config (...) 'de bir ayar ile (iş parçacığındaki önerilerden birinde düşünüyorum) mümkündür.

Ama belki de çok fazla scrue etmek istemediğiniz bir web.config dosyanız var. Sonra bu iş parçacığı çok fazla yardımcı olmaz, bu yüzden bu yanıtı ekledi.


0

Bu yanıt şu durumlarda yardımcı olabilir: 1) siteniz Visual Studio 2015 ve 2'ye yükseltmeden önce Windows kimlik doğrulaması ile çalışıyordu) ve siteniz yüklenmeye çalışıyor /login.aspx(sitenizde böyle bir dosya olmasa bile).

Aşağıdaki iki satırı appSettingssitenizin bölümüne ekleyin Web.config.

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>

0

Aynı notta - VS 2015, .vs \ config \ applicationhost.config görünmüyor veya kullanılamıyor.

Varsayılan olarak .vs klasörü gizlidir (en azından benim durumumda).

.Vs klasörünü bulamıyorsanız, aşağıdaki adımları izleyin.

  1. Çözüm klasörünü sağ tıklayın
  2. 'Özellikler'i seçin
  3. In Attributesbölümünde, tıklayın Hidden(varsayılan olarak işaretli) onay kutusunu
  4. ardından 'Uygula' düğmesini tıklayın
  5. 'Değişiklikleri bu klasöre uygula, alt klasör ve dosyalar' seçeneği seçili onay penceresini gösterecektir, 'Tamam'ı tıklayın. Bu sefer daha önce kontrol ettiğiniz 'Gizli' seçeneğine ihtiyacınız olması

    dışında 1'den 5'e kadar olan adımları tekrarlayın .step 3uncheck

Şimdi .vs klasörünü görebilmelisiniz.


0

Yukarıdaki yanıtlarda her şeyi yaptıktan sonra Visual Studio'yu Yönetici olarak çalıştırmadığımı fark ettim. Yönetici olarak çalıştırdıktan sonra sorun çözüldü.


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.