Bagikan melalui


Cara Menggunakan Delegasi Konfigurasi di IIS 7.0

oleh Saad Ladki

Abstrak

Artikel ini menjelaskan cara mengaktifkan konfigurasi yang didelegasikan di server. Ini membahas cara menyebarkan pengaturan konfigurasi untuk server dan untuk aplikasi Anda, bersama dengan halaman konten dan kode aplikasi.

Setelah administrator komputer mendefinisikan aplikasi atau direktori virtual untuk penggunaan Anda dalam file %windir%\system32\inetsrv\config\applicationHost.configkonfigurasi master , dan memungkinkan bagian tertentu untuk didelegasikan, Anda dapat mengontrol pengaturan di tingkat aplikasi: dengan membuat pengaturan dalam file web.config aplikasi, Anda mengambil alih default global. Ini dimungkinkan jika Anda memiliki akses ke direktori aplikasi, bahkan jika Anda bukan administrator lokal di komputer.

Setelah membaca dokumen ini, Anda akan tahu cara menentukan aplikasi dan direktori virtual di tingkat global, membuka kunci bagian konfigurasi untuk delegasi, dan mengambil alih pengaturan konfigurasi untuk aplikasi individual pada tingkat hierarki konfigurasi yang lebih rendah.

Pengantar

IIS memungkinkan administrator komputer untuk mendelegasikan tugas pengaturan dan mengubah konfigurasi ke pemilik situs dan aplikasi. Untuk melakukan ini, gunakan file web.config di direktori konten. File-file ini menentukan bagian konfigurasi yang berlaku pada tingkatnya dalam hierarki dan ke bawah. Administrator komputer harus secara eksplisit membuka bagian di tingkat global untuk mengaktifkan delegasi tersebut. Secara default, sebagian besar bagian IIS dikunci untuk delegasi, dan semua bagian .NET framework (termasuk ASP.NET) tidak dikunci di tingkat global.

Dokumen ini menjelaskan cara menentukan aplikasi baru dan direktori virtual di tingkat global (hanya administrator komputer yang dapat melakukan tugas ini; tidak pernah dapat didelegasikan).

Dokumen ini kemudian menjelaskan cara xcopy-deploy web.config dengan konten aplikasi untuk mengambil alih beberapa pengaturan untuk tingkat tertentu. Ini juga menjelaskan konsep inti sistem konfigurasi, dan karena itu menjelaskan cara melakukan tugas-tugas ini menggunakan pengeditan langsung file konfigurasi, tanpa menggunakan UI atau abstraksi lain di atas sistem konfigurasi.

Prasyarat

  • Pastikan IIS 7.0 atau lebih tinggi diinstal pada komputer. http://localhost/ Buka dari IE dan lihat bahwa halaman "Under Construction" default terbuka. Jika IIS tidak diinstal, lihat How-To Penyiapan untuk petunjuk penginstalan.
  • Pastikan Anda memiliki hak administratif pada komputer. Secara default, Anda tidak memilikinya jika Anda masuk sebagai pengguna selain akun Administrator bawaan, bahkan jika pengguna ini ditambahkan ke grup Administrator lokal pada komputer. Ini adalah fitur keamanan baru di Windows ServerĀ® 2008, yang disebut LUA, yang berada di luar lingkup IIS. Baik masuk sebagai akun Administrator bawaan, atau secara eksplisit memanggil aplikasi sebagai Administrator bawaan, sesuai kebutuhan, menggunakan alat cmd-line "runas":

Misalnya, untuk meluncurkan notepad.exe, jalankan perintah ini: "runas /user:administrator notepad.exe". Anda akan dimintai kata sandi akun Administrator. Hal ini berguna untuk memiliki shell cmd-box yang sudah ditinggikan, dengan menjalankan "runas /user:administrator cmd.exe". Setiap aplikasi yang dijalankan dari cmd-box juga ditingkatkan, dan Anda tidak perlu menggunakan sintaks "runas" dari cmd-box tersebut.

  • Pastikan file konfigurasi master dicadangkan. Cukup salin applicationHost.config ke file yang berbeda, sehingga Anda dapat memulihkannya nanti. Anda akan menemukan applicationHost.config di bawah direktori inetsrv\, yang pada gilirannya berada di bawah direktori sistem.

Catatan

Anda harus menjadi administrator untuk melakukan ini - lihat poin poin sebelumnya di atas.

  • Sebelum memulai, pastikan Anda dalam keadaan "bersih". Untuk melakukannya, kembalikan perubahan yang mungkin telah Anda lakukan pada file applicationHost.config dalam latihan sebelumnya. (Jika Anda menggunakan gambar VPC, cara term mudah untuk melakukannya adalah memulai ulang gambar tanpa menyimpan statusnya).
  • Disarankan agar Anda menonaktifkan pesan kesalahan HTTP yang ramah di IE (Opsi>Alat>Tingkat Lanjut) untuk pemecahan masalah yang lebih cepat.

Langkah 1: Tentukan Aplikasi Baru

  1. Menggunakan editor teks seperti Notepad, buka file ApplicationHost.config di lokasi berikut:

    %windir%\system32\inetsrv\config\applicationHost.config
    
  2. Navigasi ke bagian <sites> , yang terlihat mirip dengan yang berikut ini:

    <sites>
        <siteDefaults>
            <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </siteDefaults>
         <applicationDefaults applicationPool="DefaultAppPool"/>
         <site name="Default Web Site" id="1">
            <bindings>
              <binding protocol="http" bindingInformation="*:80:" />
            </bindings>
                    <application path="/">
              <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" />
            </application>
             <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </site>
    </sites>
    
  3. Verifikasi bahwa server Web sedang berjalan dan Anda bisa mengakses situs Web default. Untuk melakukannya, luncurkan browser dan permintaan http://localhost/

  4. Permintaan harus mengembalikan halaman Web. Jika tidak, mulai server IIS dengan mengetik "net start w3svc" dari kotak perintah, atau pecahkan masalah menggunakan penampil Log Peristiwa Windows.

  5. Di browser, minta http://localhost/

    Permintaan ini tidak mengembalikan halaman (Anda melihat halaman kesalahan), karena jalur virtual belum ditentukan dalam konfigurasi—ini adalah prosedur berikutnya.

  6. Dalam file ApplicationHost.config, tambahkan <application> elemen dengan jalur "/app" yang menyertakan elemen tingkat <virtualDirectory> atas. Direktori virtual tingkat atas adalah direktori dengan jalur "/". Untuk jalur fisik direktori virtual, tentukan C:\tmp(atau sesuatu yang serupa dengan yang nantinya akan Anda kerjakan).

    Setelah selesai, bagian <sites> terlihat mirip dengan yang berikut ini:

    <sites>
        <siteDefaults>
            <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </siteDefaults>
         <applicationDefaults applicationPool="DefaultAppPool"/>
         <site name="Default Web Site" id="1">
           <bindings>
             <binding protocol="http" bindingInformation="*:80:" />
           </bindings>
                   <application path="/">
             <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" />
           </application>
           <application path="/app" >
            <virtualDirectory path="/" physicalPath="C:\tmp" />
          </application>
            <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </site>
    </sites>
    

    Anda baru saja menentukan aplikasi baru dalam file konfigurasi.

  7. Di browser, minta http://localhost/

    Server Web mengembalikan halaman kesalahan, yang mengatakan bahwa penjelajahan direktori tidak diaktifkan. Ini terjadi karena Anda belum memiliki konten di c:\tmp, sehingga server menangani permintaan sebagai permintaan untuk menelusuri direktori. Salin iisstart.htm dari \inetpub\wwwroot direktori ke dalam c:\tmp dan refresh browser. Sekarang Anda melihat halaman Di bawah Konstruksi.

Langkah 2: Membuka Bagian Konfigurasi

  1. Menggunakan editor teks seperti Notepad, buka applicationHost.config dan temukan grup bagian <autentikasi> .

  2. <Pindahkan anonimAuthentication> dan <windowsAuthentication> bagian dari lokasi mereka saat ini dalam file ke tag lokasi baru di bagian bawah file yang memiliki overrideMode="Allow" di dalamnya, sebagai berikut:

    <configuration>
      <system.webServer>
        <security>
          <authentication>
           <!-- cut the anonymousAuthentication and windowsAuthentication -->
           <!-- XML elements from this area in the file, and paste below  -->
          </authentication>
        </security>
      </system.webServer>
       <location overrideMode="Allow">
        <system.webServer>
          <security>
            <authentication>
              <!-- paste the 2 sections from above here -->
            </authentication>
          </security>
        </system.webServer>
      </location>
    </configuration>
    

    Bagian-bagian ini sekarang dapat ditunggangi secara berlebihan oleh tingkat namespace layanan yang lebih rendah, karena berada di tag lokasi yang menentukan overrideMode="Allow". Semua file web.config tingkat bawah sekarang dapat mengambil alih pengaturan ini.

Langkah 3: Mengesampingkan Pengaturan di Tingkat Aplikasi

  1. Menggunakan editor teks seperti Notepad, buat file teks baru di folder aplikasi (misalnya c:\tmp) bernama web.config.

  2. Dalam file web.config, buat <configuration> elemen dan <system.webServer> elemen sebagai turunannya. <system.webServer> Dalam elemen , buat <security> elemen yang berisi <authentication> elemen .

  3. Masukkan pengaturan untuk menonaktifkan autentikasi Windows dan skema autentikasi anonim, yang diaktifkan secara default di tingkat global.

    Setelah selesai, file web.config terlihat seperti berikut ini:

    <configuration>
      <system.webServer>
        <security>
          <authentication>
            <windowsAuthentication enabled="false" />
            <anonymousAuthentication enabled="false" />
          </authentication>
        </security>
      </system.webServer>
    </configuration>
    
  4. Di browser, minta http://localhost/app.

    Catatan

    Anda tidak berwenang untuk melihat halaman, karena Anda menonaktifkan semua metode autentikasi ke halaman ini dalam file web.config Anda.

  5. Di browser, minta http://localhost/ dan konfirmasi bahwa Anda dapat mengakses halaman. Konfigurasi dalam file web.config hanya berlaku di tingkat aplikasi.

  6. Dalam file web.config, aktifkan autentikasi dasar dengan menambahkan <basicAuthentication> elemen dengan atribut yang diaktifkan diatur ke true.

    Setelah selesai, file web.config terlihat seperti berikut ini:

    <configuration>
      <system.webServer>
        <security>
          <authentication>
            <windowsAuthentication enabled="false" />
            <anonymousAuthentication enabled="false" />
           <basicAuthentication enabled="true" />
          </authentication>
        </security>
      </system.webServer>
    </configuration>
    
  7. Minta http://localhost/app lagi. Anda melihat halaman kesalahan yang mengatakan bahwa beberapa konfigurasi dikunci di tingkat global dan file web.config mencoba mengambil alihnya--oleh karena itu adalah kesalahan konfigurasi. Untuk mengatasinya, izinkan <bagian autentikasi> dasar di tingkat global (applicationHost.config) ditimpa, seperti yang Anda lakukan untuk dua bagian lainnya. Kemudian refresh browser .

    Anda sekarang akan dimintai nama pengguna dan kata sandi, yang menunjukkan autentikasi dasar sedang berlangsung.

  8. Masukkan nama pengguna dan kata sandi pengguna yang masuk, dan perhatikan bahwa halaman ditampilkan.

    Jika Anda meminta http://localhost/, Anda tidak akan diminta untuk memasukkan nama pengguna dan kata sandi, karena perubahan pada konfigurasi yang Anda buat hanya berlaku di tingkat aplikasi.

    Catatan

    Server dan browser keduanya menyimpan token pengguna. Jika Anda ingin memulai dari awal dan Anda tidak lagi melihat prompt nama pengguna, menutup browser, dan menghentikan proses pekerja IIS (atau menjalankan "net stop /y http' dari baris perintah Windows, lalu "net start w3svc", untuk memulai ulang IIS).

Ringkasan

Dokumen ini menjelaskan cara menentukan aplikasi dan direktori virtual dalam file konfigurasi master, applicationHost.config. Ini juga mencakup cara menyebarkan file konfigurasi khusus aplikasi yang berisi pengaturan server di bagian .<system.webServer> Anda dapat menambahkan pengaturan ke file web.config di grup bagian <system.web> , seperti pengaturan ASP.NET.

Praktik yang baik adalah mengatur daftar kontrol akses (ACL) pada file web.config atau di seluruh direktori aplikasi Anda sehingga pengguna non-administratif tidak dapat mengakses file.