IIS - 401.3 - Yetkisiz


96

IIS kullanmaya başlamaya çalışıyorum. IIS Yöneticisi'nde yeni bir site oluşturdum, bunu dosya sistemimdeki bir klasöre eşledim ve klasöre index.html ekledim. Bu site için portu 85 olarak ayarladım. Erişmeye çalıştığımda http://localhost:85/index.htmlaşağıdaki hata mesajını alıyorum:

401.3 - yetkisiz - Web sunucusundaki bu kaynak için erişim kontrol listesi (ACL) yapılandırması veya şifreleme ayarları nedeniyle bu dizini veya sayfayı görüntüleme izniniz yok.

Klasördeki herkese okuma erişimi verdim ve tekrar denedim. Daha sonra sayfaya erişebilirim.

Daha sonra klasörümün özelliklerini wwwroot ile karşılaştırdım. Wwwroot'un IIS_IUSRS üzerinde okuma erişimine sahip olduğunu buldum ... Klasörümde aynısını yaptığımda ve tekrar denediğimde, yukarıdaki hatayı tekrar aldım. İsimsiz erişimin varsayılan olarak etkin olduğunu kontrol ettim, ancak yine de bu hatayı alıyorum.

Bu neden oluyor? Sorunu çözmenin doğru yolu nedir?

Yanıtlar:


175

Birkaç gündür bu aynı konuda mücadele ettim. Sitenizin eşlendiği dosya sistemi klasörünün güvenlik kullanıcı erişim özelliklerini değiştirerek çözülebilir. Ancak IIS_IUSRS, yetkilendirmeniz gereken tek hesap değildir.

  • IIS yönetim konsolunda, sitenizin yapılandırmasının Kimlik Doğrulama bölümünde, "Anonim kimlik doğrulama" satırını değiştirin ve "Belirli kullanıcı" olarak ayarlanan hesabı kontrol edin (benimki IUSR'dir).
  • Belirli bir kullanıcı olarak listelenen hesaba sitenizin klasöründe okuma ve yürütme izni verin.

VEYA

  • IIS yönetim konsolunda, sitenizin yapılandırmasının Kimlik Doğrulama bölümünde, "Belirli kullanıcı" yerine "Uygulama havuzunun kimliği" ni seçerek "Anonim kimlik doğrulama" satırını değiştirin.

6
"Uygulama Havuzu Kimliği" ile anon kimlik doğrulamasının çalıştığını buldum, ancak bazı nedenlerden dolayı IUSR ile devam ettiremedim. Teşekkürler.
fortboise

5
Bunun arkasındaki mantık, sitenin varsayılan olarak anonim kimlik doğrulaması kullanması ve IUSR'nin anonim hesap olmasıdır. Bu nedenle IIS, dosya sistemine (web sitesi fiziksel yolu) erişmek için IUSR hesabını kullanır ve bu her zaman çalışmayabilir (çünkü dosya sisteminizin çoğu IUSR'yi kabul etmeyecektir). 401.3'ün nedeni budur. Dosya sistemi erişimini değiştirerek (bu hesaba dosyalara erişim izni verin) veya anonim hesabı havuz kimliği olarak değiştirerek (havuz kimliği genellikle dosyalara erişimi olan IIS_IUSRS içindedir), IIS dosyalara erişmek için yeterli izne sahip olmalıdır.
Lex Li

61

İşte benim için işe yarayan şey.

  1. Uygulama havuzu kimliğini, bir klasöre izinler atanabilecek bir hesaba ayarlayın.
  2. Kaynak dizine ve ilgili tüm dosyalara, uygulama havuzu kimlik özelliğine atanan hesaba yönelik dosyalar için okuma hakları verildiğinden emin olun.
  3. IIS'de, sunucu kök düğümünde, anonim kullanıcıyı uygulama havuzu kimliğinden devralacak şekilde ayarlayın. (Bu mücadele ettiğim kısımdı)

Sunucuyu anonim olarak uygulama havuzu kimliğinden devralacak şekilde ayarlamak için aşağıdakileri yapın ..

  • IIS Yöneticisi'ni açın (inetmgr)
  • Sol taraftaki bölmede kök düğümü seçin (sunucu ana bilgisayar adı)
  • Orta bölmede 'Kimlik Doğrulama' uygulamasını açın
  • 'Anonim Kimlik Doğrulama'yı vurgulayın
  • Sağdaki bölmede 'Düzenle ...' seçeneğini seçin (bir iletişim kutusu açılmalıdır)
  • 'Uygulama havuzu kimliği'ni seçin

9
# 3) SORUNUN DÜZELTİLDİ: IIS'de, sunucu kök düğümünde, anonim kullanıcıyı uygulama havuzu kimliğinden devralacak şekilde ayarlayın. (Mücadele ettiğim kısım
Ravi Ram

"Teşekkür ederim" yorumları yazmamanız gerektiğini biliyorum ama minnettarlığımı ifade etmem gerektiğini hissediyorum. Bunu anlamamın hiçbir yolu yok.
Jonny Cook

@RaviRam: Lütfen izlediğiniz adımları açıklayın. Yeni başlayanlar için Adım Adım. "N IIS, sunucu kök düğümünde, anonim kullanıcıyı uygulama havuzu kimliğinden devralacak şekilde ayarla" derken neyi kastediyorsunuz? Lütfen yardım edin.
Unbreakable

@RaviRam - "inetmgr.exe" komutunu çalıştırın ve IIS yönetim ekranı görünecektir. Bundan yola çıkarak cevabımda belirtilen adımları izleyin. Komutu muhtemelen yönetici olarak çalıştırmanız gerekecektir. msdn.microsoft.com/en-us/library/bb763170.aspx
barrypicker

Başka bir yanıtta belirtildiği gibi, anon kimlik doğrulama ayarlarını kök düzeyinde değiştirmeniz gerekmediğini fark ettim - bu ayarı site veya sanal dizin düzeyinde de değiştirebilirsiniz
jaycer

17

TL; DR;

Çoğu durumda, aşağıdaki hesaplara (biri | her ikisi) erişim izni vermek yeterli olacaktır:

  1. IIS AppPool \ DefaultAppPool
  2. IUSR

ile Erişim Hakları :

  1. Oku ve Yürüt
  2. Klasör içeriğini listele
  3. Okuyun

Bu kadar!

Daha ayrıntılı bir açıklama için okumaya devam edin ...


  1. IIS'yi açın ve uygulamanızı seçin .
  2. Sağ tarafta Kimlik Doğrulama'ya tıklayın .
  3. Burada " Anonim kimlik doğrulama " seçin .
  4. Aşağıdaki iletişim kutusu açılır.

görüntü açıklamasını buraya girin

Yukarıdaki resimde neyin seçildiğine bağlı olarak web uygulaması klasörünün ACL'sine erişim verin:

  • Belirli kullanıcı : her ikisi için de erişim izni verinIUSR(benim durumumda) +IIS AppPool\DefaultAppPool
  • Uygulama havuzu kimliği :IIS AppPool\DefaultAppPoolyalnızcaerişim izni verin

IIS AppPool\DefaultAppPool hesabı, yeni IIS web uygulamaları için varsayılan AppPool hesabıdır, özel bir hesap ayarladıysanız, özel olanı kullanın.


Hesaplara aşağıdaki izinleri verin:

  1. Read & Execute
  2. List folder contents
  3. Read

görüntü açıklamasını buraya girin


13

Statik içerikle uğraştığınız için ...

Web sitenizin kökü görevi gören klasörde -> özellikler> güvenlik'e sağ tıklarsanız listede "Kullanıcılar" görünüyor mu? "Ekle ..." yi tıklayıp yazmazsanız, bitirdiğinizde "Uygula" yı tıkladığınızdan emin olun.



1

Başkasının bununla karşılaşması ihtimaline karşı. Tüm bu adımların sorunlarını giderdim ve bir MAC'dan bazı dosyaları açtığım için Microsoft herhangi bir bildirimde bulunmadan otomatik olarak dosyaları Şifreledi. Klasör izinlerini ayarlamaya çalıştıktan saatler sonra içeri girdim ve dosya adlarının yeşil olduğunu gördüm, bu da dosyaların şifrelendiği anlamına geliyor ve klasör izinleri doğru olsa bile IIS aynı hatayı atacak.


Aynı konu için çok fazla zaman harcadım. Sadece dert etmek için buradayım. Burada IIS'yi aradım ve EFS'ye erişim sağladım, ancak cevabınız beni sorunumun temel nedenine, bir Mac'ten genişletilmiş bir zip dosyasına yönlendirdi. Benim özel senaryom, IIS üzerinde işlemde barındırılan ASP.NET Core'un başlatılmayacağı bir sorundu - olay günlüğü mesajları, stdout günlükleri, vb. Localhost aracılığıyla erişim, web.config'in geçersiz olduğunu, ancak kaynak göstermediğini belirten bir hata mesajı verdi. Açıkçası dosya erişilebilirdi, ancak içerik okunamıyordu.
Aaron

1
  1. Yeni bir Site oluşturun, Siteler klasörüne sağ tıklayın ve ardından Site ekle'ye tıklayın
  2. Site adını girin.
  3. Fiziksel yolu seçin
  4. IP Adresini Seçin
  5. Bağlantı Noktası Değiştir
  6. Tamam'ı tıklayın
  7. Uygulama Havuzlarına Git
  8. Site havuzunu seçin
  9. Gelişmiş Ayarlar'a sağ tıklayın
  10. .Net CLR Sürümünü "Yönetme Kodu Yok" olarak değiştirin
  11. Kimliği "ApplicationPoolIdentity" olarak değiştirin
  12. Site ana sayfasına gidin ve ardından "Kimlik Doğrulama" yı tıklayın
  13. AnonymousAuthentication için sağ tıklayın ve ardından "Düzenle" yi tıklayın
  14. Uygulama Havuzu Kimliğini Seçin
  15. Tamam'ı tıklayın
  16. Boom!

yollar için bir web.config ekleyin

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="React Routes" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

0

Yetkisiz bir kişinin alınmasıyla ilgili ortaya çıkabilecek diğer bir sorun, IIS'den kimlik doğrulama ayarında kullanılan sağlayıcılarla ilgilidir. Benim durumumda, Windows Kimlik Doğrulama sağlayıcısını "Anlaşma" olarak ayarlarsam bu sorunu yaşadım. "NTLM" seçeneğini seçtikten sonra erişim izni verildi.

Kimlik Doğrulama sağlayıcıları hakkında daha fazla bilgi

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/authentication/windowsauthentication/providers/



0

Yapmanız gereken Uygulama Havuzu kimlik doğrulaması (IUSR yerine) ile çalışıyorsanız, Jean Sun tarafından yapılan bu kontroller listesi, IIS'deki 401 hatasıyla başa çıkmak için bulabildiğim en iyisidir:


IIS Yöneticisi'ni açın, sitenin dağıtıldığı web sitenize veya uygulama klasörünüze gidin.

  1. Gelişmiş Ayarları açın (sağ taraftaki Eylemler bölmesindedir).
  2. Uygulama Havuzu adını not alın ve ardından bu pencereyi kapatın
  3. Kimlik doğrulama ayarlarını açmak için Kimlik Doğrulama simgesine çift tıklayın
  4. Windows Kimlik Doğrulamasını Devre Dışı Bırak
  5. Anonim Kimlik Doğrulama'ya sağ tıklayın ve Düzenle'ye tıklayın
  6. Uygulama havuzu kimliği radyo düğmesini seçin ve Tamam'a tıklayın
  7. Soldaki IIS yönetici ağacından Uygulama Havuzları düğümünü seçin ve 3. adımda not ettiğiniz Uygulama Havuzu adını seçin.
  8. Sağ tıklayın ve Gelişmiş Ayarlar'ı seçin
  9. İşlem Modeli ayarlarını genişletin ve "Yerleşik hesap" açılır listesinden ApplicationPoolIdentity öğesini seçin ve ardından Tamam'a tıklayın.
  10. Uygulama Havuzu gelişmiş ayarlar sayfasını kaydedip kapatmak için tekrar Tamam'ı tıklayın
  11. Bir Yönetici komut satırı açın (CMD simgesine sağ tıklayın ve "Yönetici Olarak Çalıştır" ı seçin. Başlangıç ​​menünüzde muhtemelen Aksesuarlar altında bir yerde olacaktır.
  12. Aşağıdaki komutu çalıştırın:

    icacls <path_to_site> /grant "IIS APPPOOL\<app_pool_name>"(CI)(OI)(M)
    

    Örneğin:

    icacls C:\inetpub\wwwroot\mysite\ /grant "IIS APPPOOL\DEFAULTAPPPOOL":(CI)(OI)(M)
    

Özellikle 5. ve 6. adımlar genellikle göz ardı edilir ve web'de nadiren bahsedilir.

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.