HttpListener.AuthenticationSchemeSelectorDelegate 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
클라이언트 인증에 사용되는 프로토콜을 결정하기 위해 호출되는 대리자를 가져오거나 설정합니다.
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 인증되지 않은 각 들어오는 요청에 대해 지정된 대리자를 호출하여 클라이언트를 인증하는 데 사용할 프로토콜을 결정합니다. 및 EndGetContext 메서드는 GetContext 가 요청을 성공적으로 인증한 경우에만 HttpListener 들어오는 요청을 반환합니다. 요청을 인증할 수 없는 경우 는 HttpListener 자동으로 401 응답을 다시 보냅니다. 속성을 사용하여 성공적으로 인증된 클라이언트의 ID를 HttpRequest.LogonUserIdentity 가져올 수 있습니다.
다양 한 애플리케이션별 메서드 인증 프로토콜을 위임할 수의 인스턴스를 하려는 경우 유용 HttpListener (수신한 요청의 특성에 따라 다양 한 인증 프로토콜을 사용 하려면 예: 요청의 Url 또는 UserHostAddress 속성).
참고
다이제스트, NTLM 또는 Negotiate를 사용하도록 이 속성을 설정하려면 , ControlPrincipal가 SecurityPermission필요합니다.
적용 대상
.NET