HttpListener.AuthenticationSchemeSelectorDelegate Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan atau mengatur delegasi yang dipanggil untuk menentukan protokol yang digunakan untuk mengautentikasi klien.
public:
property System::Net::AuthenticationSchemeSelector ^ AuthenticationSchemeSelectorDelegate { System::Net::AuthenticationSchemeSelector ^ get(); void set(System::Net::AuthenticationSchemeSelector ^ value); };
public System.Net.AuthenticationSchemeSelector? AuthenticationSchemeSelectorDelegate { get; set; }
public System.Net.AuthenticationSchemeSelector AuthenticationSchemeSelectorDelegate { get; set; }
member this.AuthenticationSchemeSelectorDelegate : System.Net.AuthenticationSchemeSelector with get, set
Public Property AuthenticationSchemeSelectorDelegate As AuthenticationSchemeSelector
Nilai Properti
Delegasi AuthenticationSchemeSelector yang memanggil metode yang digunakan untuk memilih protokol autentikasi. Nilai defaultnya adalah null
.
Pengecualian
Objek ini telah ditutup.
Contoh
Contoh kode berikut menetapkan nilai properti ini.
// Set up a listener.
HttpListener listener = new HttpListener();
HttpListenerPrefixCollection prefixes = listener.Prefixes;
prefixes.Add(@"http://localhost:8080/");
prefixes.Add(@"http://contoso.com:8080/");
// Specify the authentication delegate.
listener.AuthenticationSchemeSelectorDelegate =
new AuthenticationSchemeSelector (AuthenticationSchemeForClient);
// Start listening for requests and process them
// synchronously.
listener.Start();
' Set up a listener.
Dim listener As New HttpListener()
Dim prefixes As HttpListenerPrefixCollection = listener.Prefixes
prefixes.Add("http://localhost:8080/")
prefixes.Add("http://contoso.com:8080/")
' Specify the authentication delegate.
listener.AuthenticationSchemeSelectorDelegate = New AuthenticationSchemeSelector(AddressOf AuthenticationSchemeForClient)
' Start listening for requests and process them
' synchronously.
listener.Start()
Contoh kode berikut menyediakan implementasi metode yang dipanggil oleh AuthenticationSchemeSelector delegasi.
static AuthenticationSchemes AuthenticationSchemeForClient(HttpListenerRequest request)
{
Console.WriteLine("Client authentication protocol selection in progress...");
// Do not authenticate local machine requests.
if (request.RemoteEndPoint.Address.Equals (IPAddress.Loopback))
{
return AuthenticationSchemes.None;
}
else
{
return AuthenticationSchemes.IntegratedWindowsAuthentication;
}
}
Private Shared Function AuthenticationSchemeForClient(ByVal request As HttpListenerRequest) As AuthenticationSchemes
Console.WriteLine("Client authentication protocol selection in progress...")
' Do not authenticate local machine requests.
If request.RemoteEndPoint.Address.Equals(IPAddress.Loopback) Then
Return AuthenticationSchemes.None
Else
Return AuthenticationSchemes.IntegratedWindowsAuthentication
End If
End Function
Keterangan
Catatan
Jika Anda ingin protokol autentikasi yang sama digunakan untuk semua permintaan yang ditangani oleh instans tertentu dari HttpListener, Anda tidak perlu mengatur properti ini. Untuk menentukan protokol yang akan digunakan untuk semua permintaan klien, gunakan AuthenticationSchemes properti .
Jika klien belum menentukan informasi autentikasi di header-nya, HttpListener klien memanggil delegasi yang ditentukan untuk setiap permintaan masuk yang tidak diautentikasi untuk menentukan protokol mana, jika ada, yang akan digunakan untuk mengautentikasi klien. Metode GetContext dan EndGetContext mengembalikan permintaan masuk hanya jika HttpListener berhasil mengautentikasi permintaan. Jika permintaan tidak dapat diautentikasi, HttpListener secara otomatis mengirim kembali respons 401. Anda bisa mendapatkan identitas klien yang berhasil diautentikasi menggunakan HttpRequest.LogonUserIdentity properti .
Kemampuan untuk mendelegasikan pilihan protokol autentikasi ke metode khusus aplikasi berguna jika Anda ingin instans HttpListener menggunakan protokol autentikasi yang berbeda tergantung pada karakteristik permintaan yang diterimanya (misalnya, permintaan Url atau UserHostAddress properti).
Catatan
Untuk mengatur properti ini untuk mengaktifkan Digest, NTLM, atau Negosiasi memerlukan SecurityPermission, ControlPrincipal.