2009-05-27 105 views
3

我正在将一些网站迁移到运行IIS6的新的Windows 2003安装过程中。但是我遇到了表单身份验证的问题。有问题的网站在旧版盒子上运行良好,这是相同的操作系统和IIS版本。请求的URL授权失败

当我尝试登录到该网站,我得到一个事件日志“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> 

和/安全目录内(这不是一个虚拟目录)我的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: [email protected] 
    Is authenticated: True 
    Authentication Type: Forms 
    Thread account name: NT AUTHORITY\NETWORK SERVICE 

回答

1

试试拒绝用户? (匿名),而不是*(所有)

<authentication mode="Forms"> 
    <forms name=".ASPXFORMSAUTH" loginUrl="~/Common/Login.aspx" timeout="450" /> 
    </authentication> 
    <authorization> 
    <deny users="?" /> 
    <allow roles="Admin" /> 
    </authorization> 
-3

只是猜测这里,因为如果你付给我,我不会使用IIS,但也许你错过了一些C需要在服务器上安装的证书或密码文件?也许你需要告诉IIS你想要匹配的角色/用户。

编辑:通过你已经透露的额外信息,我会排除证书,并专注于如何定义角色。你说他们是在数据库中定义,但事实上,他们成为无效的,当你切换服务器提出了三种可能性:

  1. 你的角色被定义为的Windows 系统帐户或IIS用户。
  2. 你的角色 定义为数据库用户,但您只 复制的数据表,而不是 用户(我的意思是数据库 用户,而不是一个“用户”表中 数据库)。
  3. 您的角色被定义为 ,但是读取它们的权限已更改为 。

我怀疑它是1.)IIS用户。

+0

角色在数据库中定义并在用户登录时被拉出。该站点在旧盒子上工作。我认为这与权限甚至全球政策有关,但我似乎无法找到答案。 – Rippo 2009-05-27 07:07:01

+0

尽管如此,该语言意味着'URL授权'问题。我怀疑你的SSL或服务器证书可能没有正确设置。 – SpliFF 2009-05-27 07:40:06

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> 
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> 
0

我有相同的错误信息出现,事实证明,我的web.config的授权部分中的角色名拼写错误。