This documentation is archived and is not being maintained.

AuthenticationLevel Enumeration

Specifies client requirements for authentication and impersonation when using the WebRequest class and derived classes to request a resource.

Namespace:  System.Net.Security
Assembly:  System (in System.dll)

public enum AuthenticationLevel

Member nameDescription
NoneNo authentication is required for the client and server.
MutualAuthRequestedThe client and server should be authenticated. The request does not fail if the server is not authenticated. To determine whether mutual authentication occurred, check the value of the WebResponse.IsMutuallyAuthenticated property.
MutualAuthRequiredThe client and server should be authenticated. If the server is not authenticated, your application will receive an IOException with a ProtocolViolationException inner exception that indicates that mutual authentication failed

The values of this enumeration are used to set the AuthenticationLevel property.


The MutualAuthRequired and MutualAuthRequested values are relevant for Kerberos authentication. Kerberos authentication can be supported directly, or can be used if the Negotiate security protocol is used to select the actual security protocol. For more information about authentication protocols, see Internet Authentication.

The following code example demonstrates setting the authentication flags for a request.

No code example is currently available or this language may not be supported.
        // The following example uses the System, System.Net, 
        // and System.IO namespaces.

        static void RequestMutualAuth(Uri* resource)
            // Create a new HttpWebRequest object for the specified resource.
            WebRequest* request=dynamic_cast<WebRequest*> (WebRequest::Create(resource));
            // Request mutual authentication.
           request->AuthenticationLevel = AuthenticationLevel::MutualAuthRequested;
            // Supply client credentials.
            request->Credentials = CredentialCache::DefaultCredentials;
            HttpWebResponse* response = dynamic_cast<HttpWebResponse*> (request->GetResponse());
            // Determine whether mutual authentication was used.
            Console::WriteLine(S"Is mutually authenticated? {0}", __box(response->IsMutuallyAuthenticated));
            // Read and display the response.
            Stream* streamResponse = response->GetResponseStream();
            StreamReader* streamRead = new StreamReader(streamResponse);
            String* responseString = streamRead->ReadToEnd();
            // Close the stream objects.
            // Release the HttpWebResponse.

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0