Share via


IntranetZoneCredentialPolicy.ShouldSendCredential Metodo

Definizione

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

La classe Uri che riceverà la richiesta.

request
WebRequest

La classe WebRequest che rappresenta la risorsa da richiedere.

credential
NetworkCredential

La classe NetworkCredential che verrà inviata con la richiesta se questo metodo restituisce true.

authModule
IAuthenticationModule

L'interfaccia IAuthenticationModule che eseguirà l'autenticazione, se questa viene richiesta.

Restituisce

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 dell'invio 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 == 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;
        }
    }

Commenti

Le applicazioni non chiamano questo metodo direttamente; 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