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

Rem*_*mko 11 .net c# authentication httpwebrequest

我正在实现一些与使用RFC2617扩展的Web服务器对话的代码.为了实现这一点,我实现了一个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;
Run Code Online (Sandbox Code Playgroud)

然后我打电话 AuthenticationManager.Register(MyAuthModule);

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

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

Car*_*ppa 1

看起来该请求是以匿名形式发出的。您可以通过处理匿名请求来验证是否属于这种情况,如此处 所述

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