HttpListener.UnsafeConnectionNtlmAuthentication Proprietà

Definizione

Ottiene o imposta un valore Boolean che controlla se è necessario autenticare altre richieste che usano la stessa connessione TCP (Transmission Control Protocol), quando viene usato NTLM.

public:
 property bool UnsafeConnectionNtlmAuthentication { bool get(); void set(bool value); };
public bool UnsafeConnectionNtlmAuthentication { get; set; }
member this.UnsafeConnectionNtlmAuthentication : bool with get, set
Public Property UnsafeConnectionNtlmAuthentication As Boolean

Valore della proprietà

true se l'interfaccia IIdentity della prima richiesta verrà utilizzata per le richieste successive sulla stessa connessione; in caso contrario, false. Il valore predefinito è false.

Eccezioni

L'oggetto è stato chiuso.

Esempio

Nell'esempio di codice seguente viene illustrata l'impostazione di questa proprietà.

public static void SimpleListenerWithUnsafeAuthentication(string[] prefixes)
{
    // URI prefixes are required,
    // for example "http://contoso.com:8080/index/".
    if (prefixes == null || prefixes.Length == 0)
      throw new ArgumentException("prefixes");
    // Set up a listener.
    HttpListener listener = new HttpListener();
    foreach (string s in prefixes)
    {
        listener.Prefixes.Add(s);
    }
    listener.Start();
    // Specify Negotiate as the authentication scheme.
    listener.AuthenticationSchemes = AuthenticationSchemes.Negotiate;
    // If NTLM is used, we will allow multiple requests on the same
    // connection to use the authentication information of first request.
    // This improves performance but does reduce the security of your
    // application.
    listener.UnsafeConnectionNtlmAuthentication = true;
    // This listener does not want to receive exceptions
    // that occur when sending the response to the client.
    listener.IgnoreWriteExceptions = true;
    Console.WriteLine("Listening...");
    // ... process requests here.

    listener.Close();
}
Public Shared Sub SimpleListenerWithUnsafeAuthentication(ByVal prefixes As String())
    ' URI prefixes are required,
    ' for example "http://contoso.com:8080/index/".
    If prefixes Is Nothing OrElse prefixes.Length = 0 Then Throw New ArgumentException("prefixes")
    ' Set up a listener.
    Dim listener As HttpListener = New HttpListener()

    For Each s As String In prefixes
        listener.Prefixes.Add(s)
    Next

    listener.Start()
    ' Specify Negotiate as the authentication scheme.
    listener.AuthenticationSchemes = AuthenticationSchemes.Negotiate
    ' If NTLM Is used, we will allow multiple requests on the same
    ' connection to use the authentication information of first request.
    ' This improves performance but does reduce the security of your 
    ' application. 
    listener.UnsafeConnectionNtlmAuthentication = True
    ' This listener does Not want to receive exceptions 
    ' that occur when sending the response to the client.
    listener.IgnoreWriteExceptions = True
    Console.WriteLine("Listening...")
    ' ... process requests here.

    listener.Close()
End Sub

Commenti

Quando questa proprietà è impostata su true e la prima richiesta su una determinata connessione TCP viene autenticata usando NTLM, le richieste successive sulla stessa connessione TCP vengono elaborate usando le informazioni di autenticazione (IIdentity) della richiesta iniziale.

La proprietà non ha alcun effetto se il protocollo di autenticazione non è NTLM. Quando negozia viene specificato come protocollo di autenticazione, questa proprietà ha un effetto solo se NTLM è il protocollo effettivo usato per l'autenticazione.

Nota

Durante l'impostazione di questa proprietà per true aumentare le prestazioni, poiché non HttpListener invia ulteriori problemi di autenticazione NTLM, esiste un rischio di sicurezza in non richiedere a tutte le richieste di fornire informazioni di autenticazione. Occorre quindi stabilire se il miglioramento delle prestazioni giustifica questo rischio.

Si applica a