HttpWebRequest.Credentials Propiedad

Definición

Obtiene o establece la información de autenticación de la solicitud.

public:
 virtual property System::Net::ICredentials ^ Credentials { System::Net::ICredentials ^ get(); void set(System::Net::ICredentials ^ value); };
public override System.Net.ICredentials Credentials { get; set; }
public override System.Net.ICredentials? Credentials { get; set; }
member this.Credentials : System.Net.ICredentials with get, set
Public Overrides Property Credentials As ICredentials

Valor de propiedad

Un ICredentials que contiene las credenciales de autenticación asociadas a la solicitud. El valor predeterminado es null.

Ejemplos

En el ejemplo de código siguiente se establecen las credenciales de una solicitud.

#using <System.dll>

using namespace System;
using namespace System::Net;
using namespace System::Text;
using namespace System::IO;

// Specify the URL to receive the request.
int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   HttpWebRequest^ request = dynamic_cast<HttpWebRequest^>(WebRequest::Create(args[1]));

   // Set some reasonable limits on resources used by this request
   request->MaximumAutomaticRedirections = 4;
   request->MaximumResponseHeadersLength = 4;

   // Set credentials to use for this request.
   request->Credentials = CredentialCache::DefaultCredentials;
   HttpWebResponse^ response = dynamic_cast<HttpWebResponse^>(request->GetResponse());
   Console::WriteLine("Content length is {0}", response->ContentLength);
   Console::WriteLine("Content type is {0}", response->ContentType);

   // Get the stream associated with the response.
   Stream^ receiveStream = response->GetResponseStream();

   // Pipes the stream to a higher level stream reader with the required encoding format.
   StreamReader^ readStream = gcnew StreamReader(receiveStream, Encoding::UTF8);
   Console::WriteLine("Response stream received.");
   Console::WriteLine(readStream->ReadToEnd());
   response->Close();
   readStream->Close();
}

/*
The output from this example will vary depending on the value passed into Main
but will be similar to the following:

Content length is 1542
Content type is text/html; charset=utf-8
Response stream received.
<html>
...
</html>

*/
using System;
using System.Net;
using System.Text;
using System.IO;

    public class Test
    {
        // Specify the URL to receive the request.
        public static void Main (string[] args)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(args[0]);

            // Set some reasonable limits on resources used by this request
            request.MaximumAutomaticRedirections = 4;
            request.MaximumResponseHeadersLength = 4;
            // Set credentials to use for this request.
            request.Credentials = CredentialCache.DefaultCredentials;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            Console.WriteLine("Content length is {0}", response.ContentLength);
            Console.WriteLine("Content type is {0}", response.ContentType);

            // Get the stream associated with the response.
            Stream receiveStream = response.GetResponseStream();

            // Pipes the stream to a higher level stream reader with the required encoding format.
            StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);

            Console.WriteLine("Response stream received.");
            Console.WriteLine(readStream.ReadToEnd());
            response.Close();
            readStream.Close();
        }
    }

/*
The output from this example will vary depending on the value passed into Main
but will be similar to the following:

Content length is 1542
Content type is text/html; charset=utf-8
Response stream received.
<html>
...
</html>

*/
Imports System.Net
Imports System.Text
Imports System.IO


    Public Class Test

        ' Specify the URL to receive the request.
        Public Shared Sub Main(ByVal args() As String)
        Dim request As HttpWebRequest = CType(WebRequest.Create(args(0)), HttpWebRequest)


        ' Set some reasonable limits on resources used by this request
        request.MaximumAutomaticRedirections = 4
        request.MaximumResponseHeadersLength = 4

        ' Set credentials to use for this request.
        request.Credentials = CredentialCache.DefaultCredentials

        Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)

        Console.WriteLine("Content length is {0}", response.ContentLength)
        Console.WriteLine("Content type is {0}", response.ContentType)

        ' Get the stream associated with the response.
        Dim receiveStream As Stream = response.GetResponseStream()

        ' Pipes the stream to a higher level stream reader with the required encoding format. 
        Dim readStream As New StreamReader(receiveStream, Encoding.UTF8)

        Console.WriteLine("Response stream received.")
        Console.WriteLine(readStream.ReadToEnd())
        response.Close()
        readStream.Close()
    End Sub
End Class
'
'The output from this example will vary depending on the value passed into Main 
'but will be similar to the following:
'
'Content length is 1542
'Content type is text/html; charset=utf-8
'Response stream received.
'...
'
'

Comentarios

Cautela

WebRequest, HttpWebRequest, ServicePointy WebClient están obsoletos y no debe usarlos para el nuevo desarrollo. Use HttpClient en su lugar.

La propiedad Credentials contiene información de autenticación para identificar el creador de la solicitud. La propiedad Credentials puede ser un NetworkCredential, en cuyo caso se usa la información de usuario, contraseña y dominio contenida en el objeto NetworkCredential para autenticar la solicitud, o puede ser un CredentialCache, en cuyo caso se usa el identificador uniforme de recursos (URI) de la solicitud para determinar el usuario, la contraseña y la información de dominio que se va a usar para autenticar la solicitud.

En la mayoría de los escenarios de cliente, debe usar la propiedad DefaultCredentials, que contiene las credenciales del usuario que ha iniciado sesión actualmente. Para ello, establezca la propiedad UseDefaultCredentials en true en lugar de establecer esta propiedad.

Si la clase HttpWebRequest se usa en una aplicación de nivel intermedio, como una aplicación de ASP.NET, las credenciales de la propiedad DefaultCredentials pertenecen a la cuenta que ejecuta la página ASP (las credenciales del lado servidor). Normalmente, establecería esta propiedad en las credenciales del cliente en cuyo nombre se realiza la solicitud.

Nota

El esquema de autenticación NTLM no se puede usar para suplantar a otro usuario. Kerberos debe estar especialmente configurado para admitir la suplantación.

Para restringir HttpWebRequest a uno o varios métodos de autenticación, use la clase CredentialCache y enlace las credenciales a uno o varios esquemas de autenticación.

Los esquemas de autenticación admitidos incluyen Digest, Negotiate, Kerberos, NTLM y Basic.

Por motivos de seguridad, cuando sigue automáticamente las redirecciones, almacene las credenciales que desea incluir en el redireccionamiento en un CredentialCache y asígnela a esta propiedad. Esta propiedad se establecerá automáticamente en null tras el redireccionamiento si contiene algo excepto un CredentialCache. Tener este valor de propiedad se establece automáticamente en null en esas condiciones impide que las credenciales se envíen a cualquier destino no deseado.

Se aplica a