自定义身份验证模块仅在凭据存在时调用

时间:2014-01-10 10:40:00

标签: c# .net authentication httpwebrequest

我正在实现一些与使用RFC2617扩展的网络服务器对话的代码。 为了实现这一点,我实施了一个IAuthenticationManager模块。

我的身份验证模块会检查收到的质询是否适用于MyAuth:

    public Authorization Authenticate(String challenge, WebRequest request, ICredentials credentials)
    {

        if (!challenge.Contains(AuthenticationType)) // MyAuth
        {
            {
                return null; 
            }
        }
        ...
        // Get the token, omitted here

        return authorization;

然后我致电AuthenticationManager.Register(MyAuthModule);

当WebRequest有UseIntegrated.UseDefaultCredentials = true或请求已将凭据添加到WebRequest.Credentials时,我的身份验证模块将被调用,一切正常。但是,如果WebRequest没有凭据且未使用默认凭据,则不会调用我的授权模块,并且请求将失败。

如果收到质询但WebRequest没有凭据且未使用默认凭据,我如何确保调用我的身份验证模块?

1 个答案:

答案 0 :(得分:1)

看起来请求是以匿名方式进入的。 您可以通过处理匿名请求来验证是否是这种情况,如其解释的那样 here

如果它作为匿名请求进入,您可以尝试在Web服务器上禁用它,因为这会强制所有请求发送身份验证标头。