使用AzMan和AD角色的ASP.NET基于角色的安全性

使用AzMan和AD角色的ASP.NET基于角色的安全性,asp.net,security,active-directory,roles,azman,Asp.net,Security,Active Directory,Roles,Azman,我试图为我的一个ASP.NET应用程序评估AzMan,但我有一个奇怪的问题。我的测试应用程序需要三个角色: 使用者 所有者 管理员 我在应用程序的App_数据中创建了XML授权存储,并添加了这些角色定义。我将测试ASP.NET应用程序配置为使用AuthorizationStoreRoleProvider,并添加了一些使用Principal.IsInRole和PrincipalPermission的测试代码。在我的本地计算机上,一切都运行良好,本地帐户分配给AzMan中的角色 然后,我将测试应

我试图为我的一个ASP.NET应用程序评估AzMan,但我有一个奇怪的问题。我的测试应用程序需要三个角色:

  • 使用者
  • 所有者
  • 管理员
我在应用程序的App_数据中创建了XML授权存储,并添加了这些角色定义。我将测试ASP.NET应用程序配置为使用AuthorizationStoreRoleProvider,并添加了一些使用Principal.IsInRole和PrincipalPermission的测试代码。在我的本地计算机上,一切都运行良好,本地帐户分配给AzMan中的角色


然后,我将测试应用程序移动到服务器,并将Active Directory用户和组分配给AzMan的角色。现在PrincipalPermission和Principal.IsInRole不再工作了。有趣的是,如果我将内置的Everyone组分配到任何角色,它都会工作,所以分配给角色的广告用户和组会出现一些问题。我可以对广告组和用户使用XML授权存储吗?还有什么会导致此类问题?

请检查asp.net应用程序的安全设置

这听起来像是启用了匿名身份验证,因此您的用户是以匿名用户的身份进入的,而不是他们自己,因此它适用于everyone组。


    <roleManager enabled="true" cacheRolesInCookie="false" cookieName=".ASPXROLES" cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All" defaultProvider="AspNetWindowsTokenRoleProvider" createPersistentCookie="false" maxCachedResults="25">
        <providers>
            <clear/>
            <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        </providers>
    </roleManager>

安全设置正确。我有一个诊断页面,在那里我可以看到经过身份验证的用户的用户名和域。远射:在将组分配给Azman角色时,您是否缺少域前缀,以便它尝试使用本地组而不是域组?还有上次登录后的组分配,如果是,请注销并再次登录。宾果。广告结构比我预期的要复杂得多,组和用户在两棵树之间重复。我意外地从不同的广告树中分配了组和用户,这是我所期望的。