HttpListener.AuthenticationSchemeSelectorDelegate Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает делегат, вызываемый для определения протокола, который будет использоваться для аутентификации клиентов.
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
Значение свойства
Делегат AuthenticationSchemeSelector, который вызывает метод, используемый для выбора протокола аутентификации. Значение по умолчанию — null
.
Исключения
Объект закрыт.
Примеры
В следующем примере кода задается значение этого свойства.
// 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()
В следующем примере кода представлена реализация метода, вызываемого делегатом AuthenticationSchemeSelector .
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
Комментарии
Примечание
Если требуется использовать один и тот же протокол проверки подлинности для всех запросов, обрабатываемых определенным экземпляром HttpListener, задавать это свойство не нужно. Чтобы указать протокол, используемый для всех клиентских запросов, используйте AuthenticationSchemes свойство .
Если клиент не указал сведения о проверке подлинности в своих заголовках, HttpListener он вызывает указанный делегат для каждого входящего запроса, не прошедшего проверку подлинности, чтобы определить, какой протокол следует использовать для проверки подлинности клиента. Методы GetContext и EndGetContext возвращают входящий запрос только в том случае, HttpListener если запрос успешно прошел проверку подлинности. Если запрос не может пройти проверку подлинности, HttpListener объект автоматически отправляет ответ 401. Удостоверение клиента, прошедшего проверку подлинности, можно получить с помощью HttpRequest.LogonUserIdentity свойства .
Возможность делегировать выбор протокола проверки подлинности методу конкретного приложения полезна, если требуется, чтобы экземпляр HttpListener использовал разные протоколы проверки подлинности в зависимости от характеристик получаемых запросов (например, свойства запроса Url или UserHostAddress ).
Примечание
Чтобы задать это свойство для включения Digest, NTLM или Negotiate, требуется SecurityPermission, ControlPrincipal.