ICredentialPolicy 接口

定义

定义凭据策略,该凭据策略将用于使用 WebRequest 及其派生类发出的资源请求。

public interface class ICredentialPolicy
public interface ICredentialPolicy
type ICredentialPolicy = interface
Public Interface ICredentialPolicy
派生

示例

下面的代码示例演示此接口的实现,该接口仅允许为面向特定主机的请求发送凭据。

public ref class SelectedHostsCredentialPolicy: public ICredentialPolicy
{
public:
   SelectedHostsCredentialPolicy(){}

   virtual bool ShouldSendCredential( Uri^ challengeUri, WebRequest^ request, NetworkCredential^ /*credential*/, IAuthenticationModule^ /*authModule*/ )
   {
      Console::WriteLine( L"Checking custom credential policy." );
      if ( request->RequestUri->Host->Equals( L"www.contoso.com" ) || challengeUri->IsLoopback == true )
            return true;

      return false;
   }
};
public class SelectedHostsCredentialPolicy: ICredentialPolicy
{
    public SelectedHostsCredentialPolicy()
    {
    }

    public virtual bool ShouldSendCredential(Uri challengeUri,
        WebRequest request,
        NetworkCredential credential,
        IAuthenticationModule authModule)
    {
        Console.WriteLine("Checking custom credential policy.");
        if (request.RequestUri.Host == "www.contoso.com" ||
            challengeUri.IsLoopback == true)
            return true;

        return false;
    }
}

注解

凭据策略确定在为网络资源(如网页内容)发送 WebRequest 时是否发送凭据。 如果发送凭据,要求客户端身份验证的服务器可以在收到请求时尝试对客户端进行身份验证,而不是发送指示需要客户端凭据的响应。 虽然这可以节省到服务器的往返行程,但这种性能提升必须与跨网络发送凭据固有的安全风险进行平衡。 当目标服务器不需要客户端身份验证时,最好不要发送凭据。

注意

ICredentialPolicy 仅当 WebRequest 与请求关联的 或 WebProxy 具有不是 null的凭据时,才会调用策略。 设置此策略不会影响未指定凭据的请求。

AuthenticationManager.CredentialPolicy使用 属性设置ICredentialPolicy策略。 IAuthenticationModule处理请求身份验证的 将在执行身份验证之前调用 ShouldSendCredential 方法。 如果方法返回 false,则不执行身份验证。

策略 ICredentialPolicy 会影响当前应用程序域中具有非 null 凭据的所有 实例 WebRequest 。 不能在单个请求上重写该策略。

方法

ShouldSendCredential(Uri, WebRequest, NetworkCredential, IAuthenticationModule)

返回一个 Boolean,该值指示客户端的凭据是否随使用 WebRequest 类的实例发出的资源请求一起发送。

适用于