IIS - 401.3 - Tidak sah

96

Saya mencoba untuk mulai menggunakan IIS. Saya membuat situs baru di IIS Manager, memetakannya ke folder di sistem file saya dan menambahkan index.html ke folder. Saya telah menyetel porta ke 85 untuk situs ini. Ketika saya mencoba mengakses http://localhost:85/index.html, saya mendapatkan pesan kesalahan berikut:

401.3 - tidak berdasar - Anda tidak memiliki izin untuk melihat direktori atau halaman ini karena konfigurasi daftar kontrol akses (ACL) atau pengaturan enkripsi untuk sumber daya ini di server Web.

Saya memberikan akses baca ke semua orang di folder dan mencoba lagi. Saya kemudian dapat mengakses halaman tersebut.

Saya kemudian membandingkan properti folder saya dengan wwwroot. Saya menemukan bahwa wwwroot memiliki akses membaca di IIS_IUSRS ... Ketika saya melakukan hal yang sama di folder saya dan mencoba lagi, saya mendapatkan kesalahan di atas lagi. Saya memeriksa bahwa akses anonim diaktifkan secara default, tetapi saya masih mendapatkan kesalahan ini.

Mengapa ini terjadi? Bagaimana cara yang benar untuk menyelesaikan masalah?

Aadith Ramia
sumber

Jawaban:

175

Saya telah berjuang dalam masalah yang sama selama beberapa hari. Ini dapat diatasi dengan memodifikasi properti akses pengguna keamanan dari folder sistem file tempat situs Anda dipetakan. Tetapi IIS_IUSRS bukan satu-satunya akun yang harus Anda otorisasi.

  • Di konsol manajemen IIS, di bagian Otentikasi dari konfigurasi situs Anda, ubah baris "Otentikasi anonim" dan periksa akun yang disetel sebagai "Pengguna tertentu" (milik saya adalah IUSR).
  • Berikan izin baca dan eksekusi di folder situs Anda ke akun yang terdaftar sebagai pengguna tertentu.

ATAU

  • Di konsol manajemen IIS, di bagian Otentikasi dari konfigurasi situs Anda, ubah baris "Otentikasi anonim" dengan memilih "Identitas kumpulan aplikasi" alih-alih "Pengguna tertentu".
groch
sumber
6
Saya menemukan otentikasi langsung dengan "Application Pool Identity" untuk bekerja, tetapi tidak dapat membuatnya sesuai dengan IUSR karena beberapa alasan. Terima kasih.
fortboise
5
Logika di belakang adalah bahwa secara default situs menggunakan otentikasi anonim, dan IUSR adalah akun anonim. Jadi IIS menggunakan akun IUSR untuk mengakses sistem file (jalur fisik situs web) yang mungkin tidak selalu berfungsi (karena banyak sistem file Anda tidak menerima IUSR). Itulah penyebab 401,3. Dengan mengubah akses sistem file (memberikan akses akun tersebut ke file) atau mengubah akun anonim ke identitas kumpulan (identitas kumpulan ada di IIS_IUSRS, yang biasanya memiliki akses ke file), IIS harus memiliki izin yang cukup untuk mengakses file.
Lex Li
61

Inilah yang berhasil untuk saya.

  1. Setel identitas kumpulan aplikasi ke akun yang dapat diberi izin ke folder.
  2. Pastikan direktori sumber dan semua file terkait telah diberikan hak baca ke file ke akun yang ditetapkan ke properti identitas kumpulan aplikasi
  3. Di IIS, di node root server, setel pengguna anonim untuk mewarisi dari identitas pool aplikasi. (Ini adalah bagian yang saya perjuangkan)

Untuk menyetel server anonim agar mewarisi dari identitas kumpulan aplikasi, lakukan hal berikut ..

  • Buka Manajer IIS (inetmgr)
  • Di panel kiri pilih node root (nama host server)
  • Di panel tengah buka applet 'Otentikasi'
  • Sorot 'Anonymous Authentication'
  • Di panel kanan pilih 'Edit ...' (kotak dialog akan terbuka)
  • pilih 'Identitas kumpulan aplikasi'
barrypicker
sumber
9
# 3) MEMPERBAIKI MASALAH SAYA: Di IIS, di node root server, atur pengguna anonim untuk mewarisi dari identitas pool aplikasi. (Ini adalah bagian yang saya perjuangkan)
Ravi Ram
Saya tahu Anda tidak seharusnya menulis komentar "terima kasih", tetapi saya merasa perlu mengungkapkan rasa terima kasih saya. Tidak mungkin aku bisa memikirkan ini.
Jonny Cook
@RaviRam: Jelaskan langkah-langkah yang Anda ikuti. Langkah demi Langkah sebagai pemula. Apa yang Anda maksud dengan "n IIS, di node root server, setel pengguna anonim untuk mewarisi dari identitas pool aplikasi." Tolong bantu.
dipecahkan
@RaviRam - jalankan perintah "inetmgr.exe" dan layar administrasi IIS akan muncul. Dari sini, ikuti langkah-langkah yang diuraikan dalam jawaban saya. Anda mungkin perlu menjalankan perintah sebagai administrator. msdn.microsoft.com/en-us/library/bb763170.aspx
barrypicker
Seperti yang disebutkan dalam jawaban lain, saya menemukan bahwa Anda tidak perlu mengubah pengaturan anon auth di tingkat root - Anda juga dapat mengubah pengaturan itu di situs atau tingkat direktori virtual
jaycer
17

TL; DR;

Dalam kebanyakan kasus, memberikan akses ke akun berikut (satu | keduanya) sudah cukup:

  1. IIS AppPool \ DefaultAppPool
  2. IUSR

dengan Hak Akses :

  1. Baca & Jalankan
  2. Daftar isi folder
  3. Baca

Itu dia!

Baca terus untuk penjelasan lebih detail ...


  1. Buka IIS dan pilih aplikasi Anda .
  2. Di sisi kanan, klik Otentikasi .
  3. Pilih " Autentikasi anonim " di sini.
  4. Dialog berikut akan muncul.

masukkan deskripsi gambar di sini

Berikan akses ke ACL folder aplikasi web tergantung apa yang dipilih pada gambar di atas:

  • Pengguna tertentu : berikan akses untuk keduanyaIUSR(dalam kasus saya) +IIS AppPool\DefaultAppPool
  • Identitas kumpulan aplikasi : berikan aksesIIS AppPool\DefaultAppPoolhanya

IIS AppPool\DefaultAppPool akun adalah akun AppPool default untuk aplikasi web IIS baru, jika Anda telah menetapkan akun kustom, gunakan akun kustom.


Berikan izin berikut ke akun:

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

masukkan deskripsi gambar di sini

Legenda
sumber
13

Karena Anda berurusan dengan konten statis ...

Di folder yang bertindak sebagai root situs web Anda- jika Anda mengklik kanan> properti> keamanan, apakah "Pengguna" muncul dalam daftar? jika tidak klik "Tambahkan ..." dan ketik, pastikan untuk mengklik "Terapkan" setelah Anda selesai.

joelmdev
sumber
1

Untuk berjaga-jaga jika ada orang lain yang mengalami ini. Saya memecahkan masalah semua langkah ini dan ternyata karena saya membuka ritsleting beberapa file dari MAC, Microsoft secara otomatis tanpa pemberitahuan Mengenkripsi file. Setelah berjam-jam mencoba mengatur izin folder, saya masuk dan melihat nama file berwarna hijau yang berarti file dienkripsi dan IIS akan menampilkan kesalahan yang sama meskipun izin folder sudah benar.

Keris
sumber
Menghabiskan terlalu banyak waktu untuk masalah yang sama persis. Cukup di sini untuk bersimpati. Saya akhirnya di sini mencari IIS dan akses ke EFS, tetapi jawaban Anda memberi tahu saya penyebab utama masalah saya - file zip yang diperluas dari Mac. Skenario khusus saya adalah masalah di mana ASP.NET Core yang di-host dalam proses di IIS tidak akan diluncurkan - tidak ada pesan log peristiwa, tidak ada log stdout, dll. Mengakses melalui localhost memberikan pesan kesalahan bahwa web.config tidak valid tetapi tidak menunjukkan sumber. Jelas file dapat diakses, tetapi isinya tidak dapat dibaca.
Aaron
1
  1. Buat Situs baru, Klik kanan pada folder Situs lalu klik tambahkan Situs
  2. Masukkan nama situs.
  3. Pilih jalur fisik
  4. Pilih Alamat Ip
  5. Ubah Port
  6. Klik OK
  7. Pergi ke Application Pools
  8. Pilih kumpulan situs
  9. Klik kanan klik Pengaturan Lanjut
  10. Ubah Versi CLR .Net menjadi "Tanpa Kode Kelola"
  11. Ubah Identitas menjadi "ApplicationPoolIdentity"
  12. Buka halaman muka Situs lalu klik "Otentikasi"
  13. Klik kanan ke AnonymousAuthentication lalu klik "Edit"
  14. Pilih Application Pool Identity
  15. Klik ok
  16. ledakan!

untuk rute, tambahkan web.config

<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>
Aevi Rontos
sumber
0

Masalah lain yang mungkin timbul terkait dengan menerima yang tidak sah terkait dengan penyedia yang digunakan dalam pengaturan otentikasi dari IIS. Dalam kasus saya, saya mengalami masalah itu jika saya menetapkan penyedia otentikasi Windows sebagai "Negosiasi". Setelah saya memilih opsi "NTLM", akses diberikan.

Informasi lebih lanjut tentang penyedia otentikasi

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

nicoTaccari
sumber
0

Harap aktifkan item berikut di Windows 2012 R2

masukkan deskripsi gambar di sini

pengguna2907940
sumber
0

Jika Anda bekerja dengan otentikasi Pool Aplikasi (bukan IUSR), yang seharusnya Anda lakukan, maka daftar pemeriksaan oleh Jean Sun ini adalah yang terbaik yang dapat saya temukan untuk menangani kesalahan 401 di IIS:


Buka IIS Manager, navigasikan ke situs web atau folder aplikasi Anda tempat situs digunakan.

  1. Buka Pengaturan Lanjutan (ada di panel Tindakan sebelah kanan).
  2. Catat nama Application Pool lalu tutup jendela ini
  3. Klik dua kali pada ikon Otentikasi untuk membuka pengaturan otentikasi
  4. Nonaktifkan Otentikasi Windows
  5. Klik kanan pada Anonymous Authentication dan klik Edit
  6. Pilih tombol radio Application pool identity, klik OK
  7. Pilih node Application Pools dari pohon manajer IIS di sebelah kiri dan pilih nama Application Pool yang Anda catat di langkah 3
  8. Klik kanan dan pilih Pengaturan Lanjutan
  9. Perluas pengaturan Model Proses dan pilih ApplicationPoolIdentitydari daftar tarik-turun "Akun bawaan" lalu klik OK.
  10. Klik OK lagi untuk menyimpan dan menutup halaman pengaturan lanjutan Application Pool
  11. Buka baris perintah Administrator (klik kanan pada ikon CMD dan pilih "Run As Administrator". Ini akan berada di suatu tempat di menu awal Anda, mungkin di bawah Aksesoris.
  12. Jalankan perintah berikut:

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

    Sebagai contoh:

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

Terutama langkah 5. & 6. sering terlewatkan dan jarang disebutkan di web.

Jpsy
sumber