Поделиться через


IntranetZoneCredentialPolicy.ShouldSendCredential Метод

Определение

Возвращает значение Boolean, показывающее, отправляются ли учетные данные клиента с запросом ресурса, выполненным с помощью 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

Параметры

challengeUri
Uri

Адрес Uri, который получит этот запрос.

request
WebRequest

Запрос WebRequest, представляющий запрашиваемый ресурс.

credential
NetworkCredential

Учетные данные NetworkCredential, которые будут отправлены с запросом, если этот метод возвращает значение true.

authModule
IAuthenticationModule

Модуль IAuthenticationModule, который будет выполнять проверку подлинности, если проверка подлинности является необходимой.

Возвращаемое значение

Значение true, если запрошенный ресурс и клиент, выполнивший запрос, находятся в одном домене, в противном случае — значение false.

Реализации

Примеры

В следующем примере кода показано наследование от IntranetZoneCredentialPolicy , чтобы разрешить отправку учетных данных для запросов, использующих протокол HTTPS с обычной проверкой подлинности. При использовании ПРОТОКОЛА HTTPS и обычной проверки подлинности пароль пользователя шифруется перед отправкой по сети.

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

Комментарии

Приложения не вызывают этот метод напрямую; Он вызывается с IAuthenticationModule помощью , который отвечает за выполнение проверки подлинности на сервере. Если этот метод возвращает falseзначение , IAuthenticationModule не будет выполнять проверку подлинности клиента на сервере.

Этот метод вызывается только для запросов, которые указывают учетные данные или используют WebProxy объект , указывающий учетные данные.

Применяется к