Jim*_*im 5 asp.net iis windows-authentication iis-7.5
我们正在转换一些以前在表单身份验证下运行的Web应用程序,现在作为Windows身份验证运行.我想重新创建表单身份验证的页面安全性,只需对实际页面进行最少的修改.我能够使用简化的Web应用程序重新创建我想要的效果.我在Server 2008 R2集成管道IIS 7.5上运行应用程序.
我使用Windows身份验证创建了一个简单的3页应用程序 这三页是:
该应用的Web.Config:
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Windows"/>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
<location path="blockedpage.aspx">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
<system.webServer>
<httpErrors errorMode="Custom" >
<remove statusCode="401" subStatusCode="-1" />
<error statusCode="401" path="/development/simplesecurityapp/errorpage.aspx" responseMode="ExecuteURL" />
</httpErrors>
<validation validateIntegratedModeConfiguration="false" />
<defaultDocument>
<files>
<clear />
<add value="openpage.aspx" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
(如果我不尝试在asp.net级别重定向401错误,我只是得到标准的"未授权消息",这不是我想给用户的效果.)
但是,我收到一个我不明白的错误 - 每次服务器重置时,应用程序都会停止工作.IIS只返回401错误,直到浏览器弹出手动登录控件,这是无法满足的.(我从不希望我的用户看到浏览器登录提示)
但是,如果我在设置应用程序后(通过编辑Web配置或使用服务器GUI更新它)删除部分,访问页面,然后再添加部分,则替换httperrors部分,应用程序开始工作正如预期的那样,并一直持续到服务器重新启动,此时它开始再次为用户提供手动登录弹出窗口,这是他们无法解决的.
1)这是使用Windows身份验证来保护应用程序的正确方法吗?是否有更好的方法来配置像表单一样无法访问的目录,但仍提供自定义错误页面?)
2)这是集成管道的影响,为什么它以这种方式工作?
您正在尝试通过传输错误消息提供内容。
Forms 允许您执行此操作,因为它由第 7 层内容组成,例如 302 和 200。401 被客户端浏览器解释为“服务器不喜欢我的凭据,因此打开一个对话框来请求新的凭据”。
经过身份验证的页面至少会产生 1 401 才能通过身份验证;您为其他事情超载了“错误”可能是问题的根源。
我不确定是否有一种优雅的方式来做你想做的事。
| 归档时间: |
|
| 查看次数: |
4535 次 |
| 最近记录: |