HttpWebRequest.Credentials Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
, ServicePoint
y 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.