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 использовал различные протоколы проверки подлинности в зависимости от характеристик получаемых запросов (например, свойства или UserHostAddress запросаUrl).
Примечание
Чтобы задать это свойство для включения Digest, NTLM или Negotiate, требуется SecurityPermission, ControlPrincipal.
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по