Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Gambaran Umum
Kumpulan <providers><windowsAuthentication> elemen menentukan daftar penyedia autentikasi yang digunakan dengan modul autentikasi Windows Internet Information Services (IIS) 7. Daftar penyedia ini tidak dapat diperluas, dan secara default hanya berisi dua entri:
- Negosiasi - Penyedia ini akan mencoba menggunakan Kerberos untuk autentikasi jika tersedia.
- NTLM - Penyedia ini akan mencoba menggunakan Windows NT LAN Manager untuk autentikasi.
Kompatibilitas
| Versi | Catatan |
|---|---|
| IIS 10.0 | Elemen <providers> tidak dimodifikasi dalam IIS 10.0. |
| IIS 8.5 | Elemen <providers> tidak dimodifikasi dalam IIS 8.5. |
| IIS 8.0 | Elemen <providers> tidak dimodifikasi dalam IIS 8.0. |
| IIS 7.5 | Elemen <providers> tidak dimodifikasi dalam IIS 7.5. |
| IIS 7.0 | Elemen <providers><windowsAuthentication> elemen diperkenalkan di IIS 7.0. |
| IIS 6.0 | Koleksi menggantikan <providers> properti metabase IIS 6.0 NTAuthenticationProviders . |
Siapkan
Penginstalan default IIS 7 dan yang lebih baru tidak menyertakan layanan peran autentikasi Windows. Untuk menggunakan autentikasi Windows pada IIS, Anda harus menginstal layanan peran, menonaktifkan autentikasi Anonim untuk situs web atau aplikasi Anda, lalu aktifkan autentikasi Windows untuk situs atau aplikasi.
Catatan
Setelah Anda menginstal layanan peran, IIS 7 menerapkan pengaturan konfigurasi berikut ke file ApplicationHost.config.
<windowsAuthentication enabled="false" />
Windows Server 2012 atau Windows Server 2012 R2
- Pada taskbar, klik Manajer Server.
- Di Manajer Server, klik menu Kelola , lalu klik Tambahkan Peran dan Fitur.
- Di wizard Tambahkan Peran dan Fitur , klik Berikutnya. Pilih jenis penginstalan dan klik Berikutnya. Pilih server tujuan dan klik Berikutnya.
- Pada halaman Peran Server , perluas Server Web (IIS), perluas Server Web, perluas Keamanan, lalu pilih Autentikasi Windows. Klik Berikutnya.
- Pada halaman Pilih fitur, klik Berikutnya.
- Pada halaman Konfirmasi pilihan instalasi, klik Instal.
- Pada halaman Hasil , klik Tutup.
Windows 8 atau Windows 8.1
- Pada layar Mulai, pindahkan penunjuk ke sudut kiri bawah, klik kanan tombol Mulai, lalu klik Panel Kontrol.
- Di Panel Kontrol, klik Program dan Fitur, lalu klik Aktifkan atau nonaktifkan fitur Windows.
- Perluas Layanan Informasi Internet, perluas World Wide Web Services, perluas Keamanan, lalu pilih Autentikasi Windows.
- Klik OK.
- Klik Tutup.
Windows Server 2008 atau Windows Server 2008 R2
- Pada taskbar, klik Mulai, arahkan ke Alat Administratif, lalu klik Manajer Server.
- Di panel hierarki Manajer Server , perluas Peran, lalu klik Server Web (IIS).
- Di panel Server Web (IIS), gulir ke bagian Layanan Peran , lalu klik Tambahkan Layanan Peran.
- Pada halaman Pilih Layanan Peran wizard Tambahkan Layanan Peran, pilih Autentikasi Windows, lalu klik Berikutnya.
- Pada halaman Konfirmasi Pilihan Penginstalan , klik Instal.
- Pada halaman Hasil , klik Tutup.
Windows Vista atau Windows 7
- Pada taskbar, klik Mulai, lalu klik Panel Kontrol.
- Di Panel Kontrol, klik Program dan Fitur, lalu klik Aktifkan atau nonaktifkan Fitur Windows.
- Perluas Layanan Informasi Internet, lalu World Wide Web Services, lalu Keamanan.
- Pilih Autentikasi Windows, lalu klik OK.
Bagaimana Caranya
Tidak ada antarmuka pengguna untuk penyedia autentikasi Windows untuk IIS 7. Untuk contoh cara mengubah daftar penyedia autentikasi Windows secara terprogram, lihat bagian Sampel Kode dari dokumen ini.
Konfigurasi
Atribut
Tidak ada.
Elemen Anak
| Elemen | Deskripsi |
|---|---|
add |
Elemen opsional. Menambahkan penyedia keamanan ke kumpulan penyedia. Autentikasi Windows memerlukan setidaknya satu penyedia. |
remove |
Elemen opsional. Menghapus referensi ke penyedia keamanan dari koleksi penyedia. |
clear |
Elemen opsional. Menghapus semua referensi ke penyedia dari koleksi penyedia. |
Sampel Konfigurasi
Elemen default <windowsAuthentication> berikut dikonfigurasi pada file ApplicationHost.config root di IIS 7.0, dan menonaktifkan autentikasi Windows secara default. Ini juga mendefinisikan dua penyedia autentikasi Windows untuk IIS 7.0.
<windowsAuthentication enabled="false">
<providers>
<add value="Negotiate" />
<add value="NTLM" />
</providers>
</windowsAuthentication>
Contoh berikut mengaktifkan autentikasi Windows dan menonaktifkan autentikasi Anonim untuk situs Web bernama Contoso.
<location path="Contoso">
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
</location>
Kode Sampel
Contoh kode berikut akan mengaktifkan autentikasi Windows dan menghapus penyedia Negosiasi untuk situs bernama Contoso.
AppCmd.exe
appcmd.exe set config "Contoso" -section:system.webServer/security/authentication/windowsAuthentication /enabled:"True" /commit:apphost
appcmd.exe set config "Contoso" -section:system.webServer/security/authentication/windowsAuthentication /-"providers.[value='Negotiate']" /commit:apphost
Catatan
Anda harus memastikan untuk mengatur parameter penerapan ke apphost saat Anda menggunakan AppCmd.exe untuk mengonfigurasi pengaturan ini. Ini menerapkan pengaturan konfigurasi ke bagian lokasi yang sesuai dalam file ApplicationHost.config.
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Contoso");
windowsAuthenticationSection["enabled"] = true;
ConfigurationElementCollection providersCollection = windowsAuthenticationSection.GetCollection("providers");
ConfigurationElement addElement = FindElement(providersCollection, "add", "value", @"Negotiate");
if (addElement == null) throw new InvalidOperationException("Element not found!");
providersCollection.Remove(addElement);
serverManager.CommitChanges();
}
}
private static ConfigurationElement FindElement(ConfigurationElementCollection collection, string elementTagName, params string[] keyValues)
{
foreach (ConfigurationElement element in collection)
{
if (String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase))
{
bool matches = true;
for (int i = 0; i < keyValues.Length; i += 2)
{
object o = element.GetAttributeValue(keyValues[i]);
string value = null;
if (o != null)
{
value = o.ToString();
}
if (!String.Equals(value, keyValues[i + 1], StringComparison.OrdinalIgnoreCase))
{
matches = false;
break;
}
}
if (matches)
{
return element;
}
}
}
return null;
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim windowsAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Contoso")
windowsAuthenticationSection("enabled") = True
Dim providersCollection As ConfigurationElementCollection = windowsAuthenticationSection.GetCollection("providers")
Dim addElement As ConfigurationElement = FindElement(providersCollection, "add", "value", "Negotiate")
If (addElement Is Nothing) Then
Throw New InvalidOperationException("Element not found!")
End If
providersCollection.Remove(addElement)
serverManager.CommitChanges()
End Sub
Private Function FindElement(ByVal collection As ConfigurationElementCollection, ByVal elementTagName As String, ByVal ParamArray keyValues() As String) As ConfigurationElement
For Each element As ConfigurationElement In collection
If String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase) Then
Dim matches As Boolean = True
Dim i As Integer
For i = 0 To keyValues.Length - 1 Step 2
Dim o As Object = element.GetAttributeValue(keyValues(i))
Dim value As String = Nothing
If (Not (o) Is Nothing) Then
value = o.ToString
End If
If Not String.Equals(value, keyValues((i + 1)), StringComparison.OrdinalIgnoreCase) Then
matches = False
Exit For
End If
Next
If matches Then
Return element
End If
End If
Next
Return Nothing
End Function
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso");
windowsAuthenticationSection.Properties.Item("enabled").Value = true;
var providersCollection = windowsAuthenticationSection.ChildElements.Item("providers").Collection;
var addElementPos = FindElement(providersCollection, "add", ["value", "Negotiate"]);
if (addElementPos == -1) throw "Element not found!";
providersCollection.DeleteElement(addElementPos);
adminManager.CommitChanges();
function FindElement(collection, elementTagName, valuesToMatch) {
for (var i = 0; i < collection.Count; i++) {
var element = collection.Item(i);
if (element.Name == elementTagName) {
var matches = true;
for (var iVal = 0; iVal < valuesToMatch.length; iVal += 2) {
var property = element.GetPropertyByName(valuesToMatch[iVal]);
var value = property.Value;
if (value != null) {
value = value.toString();
}
if (value != valuesToMatch[iVal + 1]) {
matches = false;
break;
}
}
if (matches) {
return i;
}
}
}
return -1;
}
Vbscript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso")
windowsAuthenticationSection.Properties.Item("enabled").Value = True
Set providersCollection = windowsAuthenticationSection.ChildElements.Item("providers").Collection
addElementPos = FindElement(providersCollection, "add", Array("value", "Negotiate"))
If (addElementPos = -1) Then
WScript.Echo "Element not found!"
WScript.Quit
End If
providersCollection.DeleteElement(addElementPos)
adminManager.CommitChanges()
Function FindElement(collection, elementTagName, valuesToMatch)
For i = 0 To CInt(collection.Count) - 1
Set element = collection.Item(i)
If element.Name = elementTagName Then
matches = True
For iVal = 0 To UBound(valuesToMatch) Step 2
Set property = element.GetPropertyByName(valuesToMatch(iVal))
value = property.Value
If Not IsNull(value) Then
value = CStr(value)
End If
If Not value = CStr(valuesToMatch(iVal + 1)) Then
matches = False
Exit For
End If
Next
If matches Then
Exit For
End If
End If
Next
If matches Then
FindElement = i
Else
FindElement = -1
End If
End Function