IIS Express Windows Authentication

245

Saya mencoba menggunakan IIS Express dengan VS2010 untuk meng-host aplikasi silverlight. Saya memodifikasi file applicationhost.config saya untuk memungkinkan modifikasi pengaturan konfigurasi yang tepat. Saya memiliki yang berikut di web.config saya:

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

Saya tidak diautentikasi dan panggilan layanan domain saya mengembalikan catatan nol sebagai pengguna. Saya bisa menjalankan ini setelah menginstal VS2010 SP1 BETA tapi saya mencoba membuatnya bekerja hanya dengan IIS Express.

Bagaimana cara mengaktifkan Otentikasi Windows untuk bekerja dengan IIS Express. Apakah ada pengaturan konfigurasi yang saya lewatkan?

Menandai
sumber

Jawaban:

276

opsi-1 :

edit \My Documents\IISExpress\config\applicationhost.configfile dan aktifkan windowsAuthentication, yaitu:

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

opsi-2 :

Buka kunci windowsAuthentication di \ My Documents \ IISExpress \ config \ applicationhost.config sebagai berikut

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

Mengubah pengaturan override untuk jenis otentikasi yang diperlukan untuk 'Izinkan'

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

Tambahkan berikut ini di web.config aplikasi

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

Tautan di bawah ini dapat membantu: http://learn.iis.net/page.aspx/376/delegating-configuration-to-webconfig-files/

Setelah menginstal VS 2010 SP1 menerapkan opsi 1 + 2 mungkin diperlukan untuk mendapatkan otentikasi windows berfungsi. Selain itu, Anda mungkin perlu mengatur otentikasi anonim ke false di IIS Express applicationhost.config:

<authentication>

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

untuk VS2015, file konfigurasi applicationIS IIS Express dapat ditemukan di sini:

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

dan <UseGlobalApplicationHostFile>opsi dalam file proyek memilih file konfigurasi default atau khusus-solusi.

vikomall
sumber
Terima kasih. Tapi saya sudah mencoba opsi di atas. Tetapi saya masih tidak dapat menggunakan Otentikasi Windows. Saya kira saya hanya perlu menunggu VS2010 / SP1 untuk mendapatkan fungsi ini.
Markus
3
Opsi dua bekerja untuk saya. Butuh beberapa saat untuk menemukan pos ini!
TodK
Pertanyaan ini tidak benar-benar berlaku lagi sejak VS2010 sp1 keluar. Saya mencoba membuatnya berfungsi tanpa menginstal sp1. Dugaan saya adalah sp1 sedang melakukan sesuatu untuk mengaturnya pertama kali yang saya tidak tahu. Saya dapat melanjutkan dan menandai jawaban ini dengan benar, meskipun sebenarnya tidak sejak sp1 tidak diinstal adalah prasyarat.
Tandai
1
Terima kasih sobat! NTLM bekerja dengan menonaktifkan otentikasi anonim.
Rob Angelier
4
Dalam VS2015 konfigurasi IIS Express pindah ke struktur solusi, khususnya, $ (SolutionDir) \. Vs \ config \ applicationhost.config sayangnya tidak memperhitungkan konfigurasi yang ada di bawah MyDocuments \ IISExpress ke dalam akun sehingga penyesuaian apa pun perlu disesuaikan.
Tedford
401

Visual Studio 2010 SP1 dan 2012 menambahkan dukungan untuk IIS Express sehingga tidak perlu mengedit kurung sudut.

  1. Jika Anda belum melakukannya, klik kanan proyek web-flavored dan pilih "Gunakan IIS Express ...".
  2. Setelah selesai, pilih proyek web dan tekan F4untuk memfokuskan panel Properties.
  3. Setel properti "Otentikasi Windows" ke Diaktifkan, dan properti "Otentikasi Anonim" ke Dinonaktifkan.

masukkan deskripsi gambar di sini

Saya percaya solusi ini lebih unggul dari opsi vikomall.

  • Opsi # 1 adalah perubahan global untuk semua situs IIS Express.
  • Opsi # 2 meninggalkan pengembangan cruft di web.config.
    • Lebih jauh, itu mungkin akan menyebabkan kesalahan ketika digunakan untuk IIS 7.5 kecuali Anda mengikuti prosedur "membuka" pada applicationHost.config server IIS Anda.

Solusi berbasis UI di atas menggunakan elemen lokasi khusus situs di applicationHost.config IIS Express sehingga aplikasi tidak tersentuh.

Informasi lebih lanjut di sini: http://msdn.microsoft.com/en-us/magazine/hh288080.aspx

roryWoods
sumber
5
Untuk menekankan apa yang saya lewatkan - menu konteks properti dan Alt-Enterpintasan tidak sepenuhnya menggantikan detail panel properti yang memungkinkan Anda untuk mengubah apakah otentikasi windows diaktifkan atau tidak. Gunakan F4atau klik pada panel properti untuk benar-benar melihat properti.
Kaleb Pederson
Saya berjuang dengan tugas ini selama beberapa hari sebelum memulai kembali dengan artikel ini: msdn.microsoft.com/en-us/library/gg703322%28VS.98%29.aspx Pada dasarnya, abaikan semua yang ada di pos asli, mulailah dengan " virgin "applicationhost.config dan aktifkan pengaturan sesuai jawaban ini. Akhirnya saya mendapatkan otentikasi Windows! Terima kasih!!
DaveN59
Itu akhirnya mengubah pengaturan IISExpressWindowsAuthentication dari 'diaktifkan' menjadi dinonaktifkan 'di .csproj. <IISExpressWindowsAuthentication> dinonaktifkan </IISExpressWindowsAuthentication>
Cameron Taggart
7
Kedua opsi itu berwarna abu-abu dan dinonaktifkan untuk saya. Ada yang tahu kenapa?
awl
1
2 opsi menjadi abu-abu karena Anda memilikinya di IIS Express Config Anda <nama bagian = "anonymousAuthentication" overrideModeDefault = "Izinkan" /> <nama bagian = "windowsAuthentication" overrideModeDefault = "Izinkan" /> keluarkan overrideModeDefault = "Izinkan "Dan mereka tidak akan keluar
Micah Armantrout
9

Membangun berdasarkan jawaban dari booij boy, periksa apakah Anda memeriksa fitur "otentikasi windows" di Control Panel -> Program -> Aktifkan fitur windows atau -> Layanan Informasi Internet -> Layanan World Wide Web -> Keamanan

Juga, sepertinya ada perbedaan besar ketika menggunakan firefox atau internet explorer. Setelah enabeling "otentikasi windows" itu bekerja untuk saya tetapi hanya di IE.

lebah73
sumber
2
Dan membuatnya bekerja di firefox: markmonica.com/2007/11/20/…
bees73
5

Selain jawaban-jawaban hebat ini, dalam konteks lingkungan dev IISExpress, dan untuk menggagalkan kesalahan "system.web/identity@impersonate" yang terkenal, Anda bisa memastikan pengaturan berikut ini ada di file applicationhost.config Anda .

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

Ini akan memberi Anda lebih banyak fleksibilitas selama pengembangan dan pengujian, namun pastikan Anda memahami implikasi penggunaan pengaturan ini dalam lingkungan produksi sebelum melakukannya.

Posting Bermanfaat:

Chiramisu
sumber
Mendarat sepenuhnya karena kecelakaan, tetapi berhasil :-)
joshmcode
2

Di IIS Manager klik di situs Anda. Anda harus "dalam tampilan fitur" (bukan "tampilan konten")

Di bagian IIS "tampilan fitur" pilih apa yang disebut fitur "otentikasi" dan klik itu. Di sini Anda dapat mengaktifkan Otentikasi Windows. Ini juga mungkin (menurut saya di salah satu saran di utas) oleh pengaturan di web.config (...)

Tapi mungkin Anda memiliki web.config yang tidak ingin terlalu banyak diurapi. Maka utas ini tidak akan terlalu banyak membantu, itulah sebabnya saya menambahkan jawaban ini.


sumber
0

Jawaban ini dapat membantu jika: 1) situs Anda digunakan untuk bekerja dengan otentikasi Windows sebelum meningkatkan ke Visual Studio 2015 dan 2) dan situs Anda berusaha memuat /login.aspx(walaupun tidak ada file seperti itu di situs Anda).

Tambahkan dua baris berikut ke appSettingsbagian situs Anda Web.config.

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>
Theophilus
sumber
0

Pada catatan yang sama - VS 2015, .vs \ config \ applicationhost.config tidak terlihat atau tidak tersedia.

Secara default folder .vs disembunyikan (setidaknya dalam kasus saya).

Jika Anda tidak dapat menemukan folder .vs, ikuti langkah-langkah di bawah ini.

  1. Klik kanan pada folder Solusi
  2. pilih 'Properti'
  3. Di Attributesbagian, klikHidden kotak centang (default tidak dicentang),
  4. lalu klik tombol 'Terapkan'
  5. Akan muncul jendela konfirmasi 'Terapkan perubahan pada folder ini, subfolder dan opsi file' dipilih, tekan 'OK'.

    Ulangi langkah 1 hingga 5, kecuali pada step 3, kali ini Anda perlu uncheckopsi 'Tersembunyi' yang Anda periksa sebelumnya.

Sekarang harus dapat melihat folder .vs.

SatheeshN
sumber
0

Setelah melakukan semua jawaban di atas, saya tahu saya tidak menjalankan Visual Studio sebagai Admin. Setelah berjalan sebagai Admin, masalah terpecahkan.

Alisson
sumber