代码之家  ›  专栏  ›  技术社区  ›  reustmd

IIS7中的自定义基本身份验证失败

  •  5
  • reustmd  · 技术社区  · 14 年前

    我有一个asp.net mvc应用程序,其中有一些restful服务,我正在尝试使用自定义基本身份验证(它们是根据我自己的数据库进行身份验证)来保护它们。我通过编写httpmodule实现了这一点。

    我有一个方法附加到httpapplication.authenticaterQuest事件,该事件在身份验证失败时调用此方法:

        private static void RejectWith401(HttpApplication app)
        {
            app.Response.StatusCode = 401;
            app.Response.StatusDescription = "Access Denied";
            app.CompleteRequest();
        }
    

    此方法附加到httpapplication.endrequest事件:

        public void OnEndRequest(object source, EventArgs eventArgs)
        {
            var app = (HttpApplication) source;
            if (app.Response.StatusCode == 401)
            {
                string val = String.Format("Basic Realm=\"{0}\"", "MyCustomBasicAuthentication");
                app.Response.AppendHeader("WWW-Authenticate", val);
            }
        }
    

    这段代码添加了“www authenticate”头,告诉浏览器弹出登录对话框。当我使用visual studio的web服务器进行本地调试时,这非常有效。但当我在iis7中运行时失败了。

    对于iis7,除了匿名之外,我已经关闭了所有内置的身份验证模块。它仍然返回一个http 401响应,但它似乎正在删除www authenticate头。

    有什么想法吗?

    2 回复  |  直到 14 年前
        1
  •  2
  •   reustmd    14 年前

    我想出来了。问题是我将此模块命名为“BasicAuthenticationModule”,它与IIS内置的另一个模块冲突。一旦我重新命名了模块,一切都很顺利!

        2
  •  1
  •   Raj Kaimal    14 年前