ICredentialPolicy 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
定义凭据策略,该凭据策略将用于使用 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 类的实例发出的资源请求一起发送。 |