部署带.NET Identity的.NET MVC站点到IIS需启用哪些身份验证?
.NET Identity 版.NET MVC站点IIS部署认证配置解答
核心配置规则先给结论:整个站点在IIS层只需要启用「匿名身份验证」,其余所有IIS内置身份验证选项(包括表单身份验证、Windows身份验证、摘要式身份验证等)全部禁用,针对你提的三个问题具体说明如下:
- 第一个问题的答案是肯定的。.NET Identity是完全在应用层实现的认证体系,所有登录校验、权限判断、登录状态维护的逻辑都跑在ASP.NET应用管道里,完全不需要IIS参与认证流程。开启匿名身份验证的唯一作用是让IIS不拦截任何请求,把所有收到的请求完整转发给你的应用代码处理,这样你写的认证逻辑才能正常生效。
- 第二个问题的做法完全不可行。如果只给登录页开匿名、其他页面关闭匿名身份验证,IIS会在请求到达你的应用之前就直接拦截所有非登录页的匿名请求,返回401状态码,你在.NET Identity里配置的未登录自动跳登录页、接口权限校验等逻辑根本不会执行,直接导致普通用户访问站点任意非登录页都直接报权限错误,连跳转登录页的流程都走不通。
- 第三个问题的答案是绝对不要启用IIS的表单身份验证。这个模块是旧版ASP.NET Membership时代配套的System.Web层认证组件,和.NET Identity的Cookie认证管道完全不兼容,开启后会覆盖你应用里的认证Cookie处理逻辑,大概率会出现登录状态不生效、无限循环跳登录页、权限判断异常等问题。
配置校验提示:部署完成后可以检查站点
web.config的system.webServer节点,确认没有多余的认证模块注册即可。不管是.NET Framework下基于OWIN的.NET Identity,还是.NET Core/.NET 5+版本的.NET Identity,用的都是应用层的Cookie认证中间件,和IIS自带的表单验证没有任何关联。
配置界面参考:
内容的提问来源于stack exchange,提问作者variable
相关产品推荐
相关产品推荐

