我正在将一些网站迁移到运行IIS6的新Windows 2003安装。但是我遇到了表单身份验证的问题。有问题的网站在旧的盒子上运行正常,这是相同的操作系统和IIS版本。
当我尝试登录网站时,我收到一条事件日志“请求的URL授权失败”,页面重定向回: -
http://www.demo.socialclause.net/logout.aspx?ReturnUrl=/Secure/Procurement/Default.aspx
旧服务器和新服务器都包含相同的设置和相同的权限。显然我错过了某个地方但却无法理解它。有人可以帮忙吗?
我的web.config包含: -
<authentication mode="Forms">
<forms slidingExpiration="true" name=".ASPXAUTH" protection="All" loginUrl="~/logout.aspx" timeout="60" ></forms>
</authentication>
并且在/ secure目录(这不是虚拟目录)中,我的web.config包含: -
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="ClauseAdmin"/>
<allow roles="ProcurementAdmin"/>
<allow roles="ReportAdmin"/>
<allow roles="SystemAdmin"/>
<deny users="*"/>
</authorization>
</system.web>
</configuration>
事件日志显示:
Event Type: Information
Event Source: ASP.NET 2.0.50727.0
Event Category: Web Event
Event ID: 1314
Date: 26/05/2009
Time: 21:01:05
User: N/A
Computer: WILDEAA1
Description:
Event code: 4007
Event message: URL authorization failed for the request.
Event time: 26/05/2009 21:01:05
Event time (UTC): 26/05/2009 20:01:05
Event ID: af3bac34e6d74630b937a5a05d0f25f2
Event sequence: 4
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/2067908276/Root-1-128878416581538912
Trust level: Full
Application Virtual Path: /
Application Path: C:\Inetpub\websites\www.demo.socialclause.net\htdocs\
Machine name: WILDEAA1
Process information:
Process ID: 1076
Process name: w3wp.exe
Account name: NT AUTHORITY\NETWORK SERVICE
Request information:
Request URL: http://demo.socialclause.net/Secure/Procurement/Default.aspx
Request path: /Secure/Procurement/Default.aspx
User host address: 91.84.25.241
User: richard@wildesoft.net
Is authenticated: True
Authentication Type: Forms
Thread account name: NT AUTHORITY\NETWORK SERVICE
答案 0 :(得分:1)
尝试拒绝用户? (匿名)而不是*(全部)
<authentication mode="Forms">
<forms name=".ASPXFORMSAUTH" loginUrl="~/Common/Login.aspx" timeout="450" />
</authentication>
<authorization>
<deny users="?" />
<allow roles="Admin" />
</authorization>
答案 1 :(得分:0)
到目前为止我只使用了sql角色提供程序...我认为答案在于您正在使用的角色提供程序。您的用户似乎没有获得分配的角色。你能为你提供web.config部分吗?例如,这是我的:
<roleManager enabled="true" defaultProvider="IDTSqlRoleProvider" cacheRolesInCookie="true" cookieProtection="All">
<providers>
<clear/>
<add
name="IDTSqlRoleProvider"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="SqlMembershipConnectionString"
applicationName="ConsumerSynergy"/>
</providers>
</roleManager>
答案 2 :(得分:0)
试试这个?基本上,你说明了允许x,y,z,然后拒绝所有。
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="*"/>
<allow roles="ClauseAdmin"/>
<allow roles="ProcurementAdmin"/>
<allow roles="ReportAdmin"/>
<allow roles="SystemAdmin"/>
</authorization>
</system.web>
</configuration>
如果不起作用,请尝试此操作。
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="ClauseAdmin"/>
<allow roles="ProcurementAdmin"/>
<allow roles="ReportAdmin"/>
<allow roles="SystemAdmin"/>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
答案 3 :(得分:0)
我出现了相同的错误消息,结果发现我的web.config授权部分中的角色名称拼写错误。
答案 4 :(得分:-3)
在这里猜测,因为如果你付钱给我,我就不会使用IIS,但是你可能缺少一些需要在服务器上安装的证书或密码文件?也许你需要告诉IIS你想要匹配的角色/用户。
编辑:根据您发现的其他信息,我将排除证书并专注于如何定义角色。你说它们是在数据库中定义的,但是当你切换服务器时它们变得无效的事实提出了三种可能性:
我怀疑它是1.)IIS用户。