Compartir a través de


IntranetZoneCredentialPolicy.ShouldSendCredential Método

Definición

Devuelve un objeto Boolean que indica si las credenciales del cliente se envían con una solicitud de recurso realizada mediante WebRequest.

public:
 virtual bool ShouldSendCredential(Uri ^ challengeUri, System::Net::WebRequest ^ request, System::Net::NetworkCredential ^ credential, System::Net::IAuthenticationModule ^ authModule);
public virtual bool ShouldSendCredential (Uri challengeUri, System.Net.WebRequest request, System.Net.NetworkCredential credential, System.Net.IAuthenticationModule authModule);
abstract member ShouldSendCredential : Uri * System.Net.WebRequest * System.Net.NetworkCredential * System.Net.IAuthenticationModule -> bool
override this.ShouldSendCredential : Uri * System.Net.WebRequest * System.Net.NetworkCredential * System.Net.IAuthenticationModule -> bool
Public Overridable Function ShouldSendCredential (challengeUri As Uri, request As WebRequest, credential As NetworkCredential, authModule As IAuthenticationModule) As Boolean

Parámetros

challengeUri
Uri

El objeto Uri que recibe la solicitud.

request
WebRequest

El objeto WebRequest que representa el recurso solicitado.

credential
NetworkCredential

El objeto NetworkCredential que debe enviarse con la solicitud si este método devuelve true.

authModule
IAuthenticationModule

El objeto IAuthenticationModule que debe realizar la autenticación, si ésta se requiere.

Devoluciones

Es true si el recurso solicitado está en el mismo dominio que el cliente que realiza la solicitud; de lo contrario, es false.

Implementaciones

Ejemplos

En el ejemplo de código siguiente se muestra cómo derivar de IntranetZoneCredentialPolicy para permitir que se envíen credenciales para las solicitudes que usan el Protocolo de transferencia de hipertexto seguro (HTTPS) con autenticación básica. Con HTTPS y la autenticación básica, la contraseña de usuario se cifra antes de enviarse a través de la red.

// The following class allows credentials to be sent if they are for requests for resources
// in the same domain, or if the request uses the HTTPSscheme and basic authentication is 
// required.
public ref class HttpsBasicCredentialPolicy: public IntranetZoneCredentialPolicy
{
public:
   HttpsBasicCredentialPolicy(){}

   virtual bool ShouldSendCredential( Uri^ challengeUri, WebRequest^ request, NetworkCredential^ credential, IAuthenticationModule^ authModule ) override
   {
      Console::WriteLine( L"Checking custom credential policy for HTTPS and basic." );
      bool answer = IntranetZoneCredentialPolicy::ShouldSendCredential( challengeUri, request, credential, authModule );
      if ( answer == true )
      {
         Console::WriteLine( L"Sending credential for intranet resource." );
         return answer;
      }

      // Determine whether the base implementation returned false for basic and HTTPS.
      if ( request->RequestUri->Scheme == Uri::UriSchemeHttps && authModule->AuthenticationType->Equals( L"Basic" ) )
      {
         Console::WriteLine( L"Sending credential for HTTPS and basic." );
         return true;
      }

      return false;
   }
};
// The following class allows credentials to be sent if they are for requests for resources
// in the same domain, or if the request uses the HTTPSscheme and basic authentication is
// required.

       public class HttpsBasicCredentialPolicy: IntranetZoneCredentialPolicy
    {
        public HttpsBasicCredentialPolicy()
        {
        }

        public override bool ShouldSendCredential(Uri challengeUri,
            WebRequest request,
            NetworkCredential credential,
            IAuthenticationModule authModule)
        {
            Console.WriteLine("Checking custom credential policy for HTTPS and basic.");
            bool answer = base.ShouldSendCredential(challengeUri, request, credential, authModule);

            if (answer == true)
            {
                Console.WriteLine("Sending credential for intranet resource.");
                return answer;
            }
            // Determine whether the base implementation returned false for basic and HTTPS.
            if (request.RequestUri.Scheme == Uri.UriSchemeHttps &&
                authModule.AuthenticationType == "Basic")
            {
                Console.WriteLine("Sending credential for HTTPS and basic.");
                return true;
            }
            return false;
        }
    }

Comentarios

Las aplicaciones no llaman directamente a este método; lo llama el IAuthenticationModule que es responsable de realizar la autenticación con el servidor. Si este método devuelve false, el IAuthenticationModule no autenticará el cliente en el servidor.

Solo se llama a este método para las solicitudes que especifican credenciales o usan un WebProxy objeto que especifica las credenciales.

Se aplica a