IntranetZoneCredentialPolicy.ShouldSendCredential Metodo

Definizione

Restituisce un valore Boolean che indica se le credenziali del client vengono inviate con una richiesta di una risorsa effettuata tramite 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

Parametri

challengeUri
Uri

Oggetto Uri che riceverà la richiesta.

request
WebRequest

Oggetto WebRequest che rappresenta la risorsa richiesta.

credential
NetworkCredential

Oggetto NetworkCredential che verrà inviato con la richiesta se questo metodo restituisce true.

authModule
IAuthenticationModule

Oggetto IAuthenticationModule che eseguirà l'autenticazione, se è necessaria l'autenticazione.

Valori restituiti

true se la risorsa richiesta si trova nello stesso dominio del client che effettua la richiesta; in caso contrario, false.

Implementazioni

Esempio

L'esempio di codice seguente illustra la derivazione da IntranetZoneCredentialPolicy per consentire l'invio delle credenziali per le richieste che usano SECURE Hypertext Transfer Protocol (HTTPS) con l'autenticazione di base. Usando HTTPS e l'autenticazione di base, la password utente viene crittografata prima di essere inviata in rete.

// 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 )
      {
         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 )
            {
                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;
        }
    }

Commenti

Le applicazioni non chiamano direttamente questo metodo; viene chiamato da IAuthenticationModule che è responsabile dell'esecuzione dell'autenticazione con il server. Se questo metodo restituisce false, l'oggetto IAuthenticationModule non autentica il client nel server.

Questo metodo viene chiamato solo per le richieste che specificano le credenziali o usano un WebProxy oggetto che specifica le credenziali.

Si applica a