401 - Tidak Sah Pada Server 2008 R2 IIS 7.5

20

Saya memiliki aplikasi web yang digunakan untuk kotak Server 2008 IIS 7.5.

Dari jarak jauh memberikan kesalahan ini: 401 - Unauthorized: Access is denied due to invalid credentials. (jarak jauh = desktop pada LAN yang sama)

Telah mencoba beberapa klien jarak jauh menggunakan browser yang berbeda, semua hasilnya sama. (IE, FF, dan Chrome)

Memukul aplikasi dari desktop server itu sendiri berfungsi dengan sempurna . Namun saya belum mencoba Firebug di desktop server. Saya akan menganggap itu masih mengeluarkan kode status 401 namun tetap mengembalikan konten. Lihat Pembaruan # 2.

Aplikasi ini menggunakan Otentikasi Anonim.

Aplikasi ini ditulis dalam .NET 4.0 Asp.Net menggunakan kerangka kerja MVC.

Konten statis berfungsi dengan baik, contoh: http://server.com/content/image.jpg

Sysinternals procmonmengembalikan 2 hasil ini untuk setiap permintaan: FAST IO DISALLOWED dan PATH NOT FOUND.

Saya memiliki 2 aplikasi MVC lainnya berjalan dengan baik di server yang sama. Saya telah memeriksa keamanan pada folder dan semuanya cocok.

Aplikasi berjalan dengan baik pada kotak Server 2008 IIS 7.0.

Tidak ada yang muncul di log peristiwa di server terkait dengan ini.

Menarik rambut saya ke sini, ada kiat pemecahan masalah?

UPDATE # 1 : Ini hanya mendapatkan lebih banyak WTF saat saya menggali.

Jika saya mengklik Aplikasi di IIS Manager -> Halaman Kesalahan -> pilih Edit Pengaturan Fitur Detailed Errors, aplikasi bekerja dari jarak jauh. Tidak meninggalkan ini, jadi masalah belum terpecahkan, itu hanya lebih membingungkan.

UPDATE # 2 : Menggunakan Firebug, saya melihat bahwa Statusnya masih 401 Unauthorized, tetapi Responsnya mengembalikan HTML aplikasi yang benar.

PEMBARUAN # 3 Bermain-main dengan Pelacakan Permintaan Gagal, berikut adalah Jejak Permintaan PERINGATAN yang menyebabkan 401:

ModuleName ManagedPipelineHandler
Notification 128
HttpStatus 401 
HttpReason Unauthorized 
HttpSubStatus 0 
ErrorCode 0 
ConfigExceptionInfo  
Notification EXECUTE_REQUEST_HANDLER 
ErrorCode The operation completed successfully. (0x0)

Pembaruan # 4 Log IIS reguler menunjukkan ini:

#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2010-07-20 19:17:22
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken
2010-07-20 19:17:22 10.10.1.10 GET /Purchasing/Home - 80 - 10.10.1.12 Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US;+rv:1.9.2.6)+Gecko/20100625+Firefox/3.6.6 401 0 0 4414
mxmissile
sumber
Apakah Anda mencoba menjalankan Pelacakan Permintaan Gagal di server dan mengakses aplikasi dari mesin jarak jauh. Jika ada kegagalan, Anda harus melihat penyebabnya.
Vivek Kumbhar
@vivek lihat pembaruan terakhir saya
mxmissile
ARRG !!! Dapat tetapi dengan ini lagi! 2 jam sia-sia mencari Html.RenderAction, lalu menyadari penggunaan Razor Html.Actionsehingga pencarian awal saya kosong.
mxmissile
Oh sudah beberapa tahun, coba tebak? Hanya menghabiskan 3 jam pada pagi ini untuk LAGI ini! Kapan saya akan belajar?!?!?!
mxmissile

Jawaban:

19

Kadang-kadang Anda harus mengambil langkah mundur ... Penyebabnya adalah saya memiliki pandangan Html.RenderAction()saya yang disebut metode tindakan yang ditandai dengan [Authorize]atribut.

mxmissile
sumber
1
Ini adalah masalah saya, itu cukup membuat frustasi untuk memukul panda (bukan saya yang mau). Terima kasih mxmissile.
Khalid Abuhakmeh
4

Karena berfungsi secara lokal tetapi tidak jauh, sepertinya saya seperti akun pengguna anonim tidak memiliki akses ke sesuatu, tetapi pengguna windows Anda melakukannya. Untuk membuktikan ini, matikan Windows Authentication untuk situs web dan lihat apakah itu rusak secara lokal.

Apa pun yang melanggar kemungkinan berjalan sebagai identitas situs web Anda alih-alih identitas kumpulan aplikasi Anda, jika tidak maka akan rusak secara lokal dan jarak jauh. Rekomendasi saya jika Anda memiliki 1 hingga 1 pemetaan situs ke kumpulan aplikasi, atau Anda memiliki lingkungan yang sangat tepercaya, adalah mengatur akun pengguna anonim untuk menggunakan identitas kumpulan aplikasi. Maka Anda tidak perlu khawatir tentang mempertahankan pengguna ke-2.

Anda menyebutkan proses explorer. Itu bagus untuk menemukan info yang berjalan, tetapi alat yang kemungkinan akan mengungkap kesalahan akses ditolak adalah processmon (juga dari sysinternals). Cobalah, ulangi dan tangkap, lalu cari kata 'ditolak'. Seharusnya muncul masalah akses yang ditolak pada disk.

Scott Forsyth - MVP
sumber
4

Anda akan memiliki perilaku yang sama ketika Anda memiliki filter untuk otorisasi khusus yang mewarisi dari AuthorizeAttributedan satu atau lebih panggilan ke OnAuthorizationmetode, dengan salah satu dari mereka mengatur AuthorizationContext.Resultke `HttpUnauthorizedResult '

Elfdragore
sumber
4

Untuk beberapa alasan ini memperbaiki masalah saya.

  1. Klik situs di IIS.
  2. Otentikasi klik dua kali
  3. Klik kanan dan pilih Pengaturan lanjutan
  4. Hapus pilihan "Aktifkan otentikasi mode-Kernel"
CTom
sumber
2

Apakah Anda memeriksa pengaturan di bawah aturan Otorisasi? Jika ada yang dapat mengakses halaman ini (yang tampaknya menjadi tujuan Anda), pastikan Anda memiliki aturan "Izinkan" yang memiliki "Semua Pengguna" di bawah kolom pengguna.

Kemudian di "Otentikasi" pastikan tidak ada konflik dan hanya Otentikasi Anonim yang diaktifkan.

Semoga itu bisa membantu.

Campo
sumber
1
Izinkan - Semua Pengguna - Diwarisi
mxmissile