Saya memiliki aplikasi .NET 3.5 yang berjalan di bawah IIS 7 di Windows 2003 server dan tidak bisa mendapatkan otentikasi windows terintegrasi bekerja dengan baik karena saya terus diminta untuk login. Saya telah mengatur Otentikasi Windows untuk diaktifkan di IIS dengan semua jenis keamanan lainnya dinonaktifkan dan otentikasi / otorisasi file web.config aplikasi saya diatur sebagai:
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="3.5" />
<authenticationmode="Windows"/>
<authorization>
<deny users = "?" />
</authorization>
</system.web>
Dengan pengaturan ini, saya mengharapkan verifikasi di belakang layar dari pengguna Windows untuk mengizinkan akses dan menolak pengguna anonim. Namun, yang saya dapatkan adalah pop-up login Windows saat saya mencoba mengakses situs.
Saya telah memecahkan masalah ini selama beberapa hari sekarang dan tidak dapat menemukan masalahnya. Berdasarkan posting dengan masalah serupa, saya mengonfirmasi bahwa URL saya tidak menyertakan periode apa pun, memeriksa ulang apakah pengaturan IE saya disetel ke Aktifkan Otentikasi Windows Terpadu, dan juga menambahkan URL saya ke situs intranet saya, tetapi masih mendapatkan munculan.
Untuk memecahkan masalah lebih lanjut, saya mengaktifkan Autentikasi Anonim di IIS dan memodifikasi file web.config saya yang memungkinkan saya masuk dan kemudian menambahkan Response.Write (System.Security.Principal.WindowsIdentifity.getcurrent (). User.name.toString () ) untuk mencoba melihat pengguna apa yang sedang digunakan dalam otentikasi. Hasil yang saya dapatkan adalah IIS APPPOOL \ myapp yang jelas merupakan pool aplikasi IIS untuk aplikasi saya.
Saya sangat menghargai bantuan apa pun yang dapat diberikan siapa pun sehingga saya masih hanya menggunakan otentikasi windows tetapi tidak mendapatkan pop-up dan otentikasi windows dilakukan terhadap pengguna Windows yang sebenarnya.
Terima kasih.
Catatan tambahan setelah pemecahan masalah lebih lanjut:
Hanya memperhatikan bahwa ketika login gagal dan prompt login Windows muncul lagi, itu menunjukkan nama pengguna yang mencoba untuk login sebagai "SERVERNAME" \ "USERNAME" yang membuat saya percaya itu mencoba untuk memvalidasi pengguna terhadap server vs. domain. Untuk mengonfirmasi ini, saya membuat akun pengguna lokal langsung di server aplikasi dengan nama pengguna dan kata sandi yang sama dengan pengguna domain jaringan dan mencoba masuk lagi. Hasilnya adalah saya menerima prompt login lagi tetapi ketika saya memasukkan nama pengguna dan kata sandi kali ini, saya berhasil masuk. Pengguna jaringan dan server aplikasi berada di domain yang sama jadi benar-benar tidak yakin mengapa otentikasi IIS mengarah ke akun server aplikasi lokal dan bukan ke akun domain. Saya menyadari ini adalah pertanyaan IIS pada saat ini jadi posting di forums.iis.
<authentication mode="Windows" />
Mudah-mudahan itu hanya salah ketik dalam pertanyaan Anda?Jawaban:
Saya memiliki server Windows 2008 yang sedang saya kerjakan, jadi jawaban saya tidak sepenuhnya sama dengan apa yang dimiliki OP di server Windows 2003.
Inilah yang saya lakukan (merekam ini di sini sehingga saya dapat menemukannya nanti).
Saya mengalami masalah yang sama:
Di file Web.config saya , saya memiliki bagian ini:
Di bawah IIS, semua ini tampaknya diselesaikan di bawah ikon Otentikasi .
Sekarang masuk ke fitur Otentikasi :
Aktifkan Otentikasi Anonim dengan
IUSR
:Aktifkan Otentikasi Windows , lalu Klik Kanan untuk mengatur Penyedia .
NTLM harus PERTAMA!
Berikutnya, periksa bahwa di bawah Advanced Settings ... yang Perlindungan Diperpanjang adalah Menerima dan Aktifkan Kernel-mode otentikasi adalah DIPERIKSA:
Setelah saya melakukan ini, saya kembali ke aplikasi web saya, mengklik tautan Jelajahi, dan masuk tanpa harus memberikan kredensial saya lagi.
Saya harap ini terbukti bermanfaat bagi banyak dari Anda, dan semoga bermanfaat bagi saya di kemudian hari.
sumber
Hanya untuk keuntungan orang lain. Jika kesalahannya adalah a
401.1 Unauthorized
dan kode kesalahan Anda cocok0xc000006d
, maka Anda benar-benar mengalami "fitur" keamanan yang memblokir permintaan ke FQDN atau header host kustom yang tidak cocok dengan nama mesin lokal Anda:Ikuti artikel dukungan ini untuk memperbaiki masalah:
https://webconnection.west-wind.com/docs/_4gi0ql5jb.htm (asli, sekarang tidak berfungsi: http://support.microsoft.com/kb/896861 )
Dari artikel dukungan, untuk memastikannya tidak hilang:
Yang ini memakan waktu cukup lama karena komentar semua orang di sini gagal membantu saya. Saya menemukan artikel ini dan itu memperbaikinya!
sumber
Saya memiliki masalah serupa dimana saya hanya ingin melindungi bagian tertentu dari situs saya. Semuanya bekerja dengan baik kecuali di IE. Saya mengaktifkan Anonim dan Autentikasi Windows. Untuk Anonim, Identitas diatur ke identitas Kumpulan Aplikasi. Masalahnya ada pada Otentikasi Windows. Setelah beberapa penggalian, saya menyalakan fiddler dan menemukan bahwa itu menggunakan Kerberos sebagai penyedia (sebenarnya sudah diatur ke Negosiasi secara default). Saya beralih ke NTLM dan memperbaikinya. HTH
Daudi
sumber
Tambahkan izin [Pengguna Domain] ke keamanan web Anda.
sumber
Jangan membuat kesalahan di server Anda dengan mengubah segalanya. Jika Anda memiliki prompt windows untuk logon saat menggunakan Windows Authentication pada 2008 R2, cukup masuk ke
Providers
dan naikkanNTLM
ke NAIK untuk setiap aplikasi Anda. KetikaNegotiate
yang pertama dalam daftar, Otentikasi Windows dapat berhenti bekerja properti untuk aplikasi tertentu pada 2008 R2 dan Anda dapat diminta untuk memasukkan nama pengguna dan kata sandi daripada tidak pernah berfungsi. Itu kadang-kadang terjadi ketika Anda melakukan pembaruan pada aplikasi Anda. Pastikan saja daripadaNTLM
yang pertama dalam daftar dan Anda tidak akan pernah melihat masalah ini lagi.sumber
Jika URL Anda memiliki titik di nama domain, IE akan memperlakukannya seperti alamat internet dan bukan lokal. Anda memiliki setidaknya dua opsi:
Buka situs dan batalkan dialog login. Biarkan ini terjadi:
Dalam pengaturan IE:
sumber
WindowsIdentity.GetCurrent
benar: Anda harus mendapatkan pengguna APPPOOL. Ini karena proses ASP.NET, yang menjalankan kode Anda, adalah identitas saat ini. Jika Anda ingin mengembalikan pengguna mengenai identitas situs, Anda harus menambahkan baris berikut di web.config Anda:Ini menyebabkan proses mengasumsikan identitas pengguna yang meminta halaman. Semua tindakan akan dilakukan atas nama mereka, jadi setiap upaya untuk membaca folder di jaringan atau mengakses sumber basis data dan sejenisnya berarti pengguna saat ini memerlukan izin untuk hal-hal tersebut. Anda dapat membaca lebih lanjut tentang peniruan di sini . Perhatikan bahwa bergantung pada bagaimana topologi server web / database Anda disiapkan, Anda mungkin mengalami masalah delegasi dengan peniruan identitas diaktifkan.
Tetapi masalah asli Anda adalah tampaknya identitas tidak dapat ditentukan dan Anda mendapatkan popup login. Saya perhatikan bahwa Anda tidak memerlukan
<deny>
blokir jika Anda telah menonaktifkan otentikasi anonim di IIS. Kami tidak pernah memasukkannya (kecuali khusus<location>
blok dan semacamnya) jadi saya akan mengatakan Anda dapat mencoba menghapusnya dan mencoba lagi. Namun, segala sesuatu yang lain terdengar benar.Anda tidak menentukan pengguna apa yang menjalankan pool aplikasi di IIS. Apakah ini akun khusus atau akun default? Jika kustom, apakah itu akun domain atau akun lokal di server web? Akun kustom terkadang memerlukan beberapa langkah lagi, seperti mendaftarkan SPN. Selain itu, mungkin ada masalah dengan akun kustom yang tidak memiliki izin di AD untuk menyelesaikan akun pengguna yang masuk.
Anda juga dapat memeriksa log IIS untuk melihat respons apa yang dikembalikan. Kemungkinan besar akan menjadi 401, tetapi harus memiliki sub nomor setelahnya seperti 401,2 atau sesuatu. Sub-nomor tersebut terkadang dapat membantu menentukan akar masalahnya. Ini artikel KB daftar lima.
sumber
Ini memperbaikinya untuk saya.
Server Saya dan PC Klien adalah Windows 7 dan berada dalam domain yang sama
di iis7.5-aktifkan otentikasi windows untuk Intranet Anda (nonaktifkan semua otentikasi lainnya .. juga Tidak perlu menyebutkan otentikasi windows di file web.config
kemudian pergi ke PC Klien .. IE8 atau 9- Alat-Opsi internet-Keamanan-Intranet Lokal-Situs-lanjutan-Tambahkan situs Anda (hapus tanda tiket "memerlukan server verfi ... "..tidak perlu
IE8 atau 9- Tools-internet Options-Security-Local Intranet-Custom level-userauthentication-logon-pilih logon otomatis dengan nama pengguna dan kata sandi saat ini
simpan pengaturan ini .. Anda sudah selesai .. Tidak perlu lagi meminta nama pengguna dan sandi.
Pastikan, karena pc klien Anda adalah bagian dari domain, Anda harus memiliki GPO untuk pengaturan ini, .. atau jika tidak, pengaturan ini akan dikembalikan saat pengguna masuk ke windows di lain waktu
sumber
Bisa terkait browser. Jika Anda menggunakan IE, Anda dapat pergi ke Pengaturan Lanjutan dan centang kotak "Aktifkan Otentikasi Terintegrasi Windows" dicentang.
sumber
Dalam kasus saya, pengaturan otorisasi tidak disiapkan dengan benar.
saya harus
buka Aturan Otorisasi .NET di Manajer IIS
dan menghapus yang Deny Aturan
sumber
Di Intranet kami, masalah diselesaikan di sisi klien dengan mengubah pengaturan keamanan seperti yang ditunjukkan di sini. Salah satu kotak centang di sebelah kanan berfungsi untuk kami.
sumber
Saya baru saja memecahkan masalah serupa dengan aplikasi ASP.Net.
Gejala: Saya bisa masuk ke aplikasi saya menggunakan pengguna lokal, tetapi bukan pengguna domain, bahkan jika mesin telah bergabung dengan benar ke domain (seperti yang Anda katakan di Catatan Tambahan Anda). Di penampil acara Keamanan, ada acara dengan ID = 4625 "Domain sid tidak konsisten".
Solusi: Saya menemukan solusinya di sini . Masalahnya adalah bahwa mesin uji saya di mana mesin virtual kloning (Windows Server 2008 R2; satu Pengontrol Domain, dan satu server web). Keduanya memiliki mesin SID yang sama, yang ternyata menyebabkan masalah. Inilah yang saya lakukan:
Anda kehilangan beberapa pengaturan dalam proses (preferensi pengguna, IP statis, membuat ulang sertifikat yang ditandatangani sendiri), tetapi sekarang saya telah membuatnya kembali, semuanya berfungsi dengan benar.
sumber
Saya juga memiliki masalah yang sama. Mencoba sebagian besar hal yang ditemukan di forum ini dan lainnya.
Akhirnya berhasil setelah melakukan sedikit RnD sendiri.
Saya masuk ke Pengaturan IIS dan kemudian ke opsi izin situs web saya menambahkan Grup Pengguna Domain Organisasi saya.
Sekarang karena semua pengguna domain saya telah diberikan akses ke situs web itu, saya tidak mengalami masalah itu.
Semoga ini membantu
sumber
Sudahkah Anda mencoba masuk dengan awalan domain Anda, misalnya DOMAIN \ Nama pengguna? IIS 6 default menggunakan komputer host sebagai domain default sehingga menentukan domain saat logon dapat memecahkan masalah.
sumber
Saya mencoba trik konfigurasi IIS di atas dan peretasan registri loopback, dan saya meninjau dan membuat ulang izin kumpulan aplikasi dan lusinan hal lainnya dan masih tidak dapat menyingkirkan loop otentikasi yang berjalan pada workstation pengembangan saya dengan IIS Express atau IIS 7.5, dari sesi penjelajahan lokal atau jarak jauh. Saya menerima empat tanggapan status 401,2 dan halaman kosong. Situs yang sama persis yang diterapkan ke server pementasan IIS 8.5 saya bekerja dengan sempurna.
Akhirnya saya melihat markup di Badan Respon yang diberikan kosong oleh browser berisi halaman default untuk log in yang berhasil. Saya memutuskan bahwa penanganan Kesalahan Kustom untuk ASP.NET dan HTTP untuk kesalahan 401 mencegah / mengganggu Otentikasi Windows di workstation saya tetapi bukan server pementasan. Saya menghabiskan beberapa jam mengutak-atik ini, tetapi segera setelah saya menghapus penanganan khusus hanya untuk kesalahan 401, workstation kembali normal. Saya menyajikan ini sebagai cara lain untuk menembak kaki Anda sendiri.
sumber
Otentikasi Windows di IIS7.0 atau IIS7.5 tidak bekerja dengan kerberos (provider = Negotiate) ketika identitas kumpulan aplikasi adalah ApplicationPoolIdentity Seseorang harus menggunakan Layanan Jaringan atau akun bawaan lainnya. Kemungkinan lain adalah menggunakan NTLM agar Windows Authenticatio berfungsi (di Autentikasi Windows, Penyedia, letakkan NTLM di atas atau hapus negosiasi)
chris van de vijver
sumber
Saya memiliki masalah yang sama karena pengguna (Identitas) yang saya gunakan di pool aplikasi tidak berada di bawah grup IIS_IUSRS. Menambahkan pengguna ke grup dan semuanya berfungsi
sumber
Dalam kasus saya, solusinya adalah (di atas penyesuaian yang disarankan di atas) untuk memulai ulang komputer pengembangan lokal / pengguna saya / IIS (server hosting). Pengguna saya baru saja ditambahkan ke grup keamanan AD yang baru dibuat - dan kebijakan tidak berlaku untuk akun AD pengguna sampai saya keluar / menghidupkan ulang komputer saya.
Semoga ini bisa membantu seseorang.
sumber
Saya mengalami masalah meminta kredensial yang sama, dan melakukan pencarian cepat dan tidak ada di internet yang akan memperbaikinya. Butuh beberapa waktu untuk menemukan masalahnya, yang konyol.
Di IIS -> Pengaturan Lanjutan -> Kredensial Jalur Fisik (kosong)
Segera setelah saya menambahkan ID mesin (domain / pengguna) yang memiliki akses ke VM / server, permintaan kata sandi akan berhenti.
Semoga ini membantu
sumber
Saya mengalami masalah ini pada .net core 2 dan setelah melalui sebagian besar saran dari sini tampaknya kami melewatkan pengaturan di web.config
Pengaturan yang benar adalah forwardWindowsAuthToken = "true" yang tampaknya jelas sekarang, tetapi ketika ada begitu banyak situasi untuk masalah yang sama, lebih sulit untuk menentukan
Sunting: Saya juga merasa terbantu dengan artikel Msdn berikut yang membahas pemecahan masalah.
sumber
Saya mendapat masalah yang sama dan itu diselesaikan dengan mengubah identitas pool aplikasi dari pool aplikasi yang menjalankan aplikasi web ke NetworkService
sumber