0

在我使用 Windows 身份验证的应用程序中,我一直在手动创建存储在 SQL 中的用户角色/成员资格(在 web.config 中启用了 System.Web.Security.SqlRoleProvider)。

 <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="connMembership" applicationName="/" />

但是现在,当我发布应用程序时,我需要更改为使用公司的 Active Directory 组

<add name="AspNetActiveDirectoryMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADService" attributeMapUsername="sAMAccountName"   />

    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />

我有两个问题(对不起,我对这一切真的很陌生!)

1) 现在在我的 web.config 中使用 ActiveDirectoryMembershipProvider 和 WindowsTokenRoleProvider,如何限制用户访问应用程序的不同页面?(即使用 Roles.IsUserInRole(username, "ADGroupName") 是唯一的方法吗?

2) 如何使用 Active Directory 创建“管理员”类型的角色?我问是因为之前(仍在使用 SqlRoleProvider 时)我能够为自己创建一个管理员组,以便将自己添加到可以访问所有页面/功能的 SQL 中

i.e Roles.AddUserToRole(userName, Admin). 

但现在由于我是受限 AD 组的一员,我不知道如何使用某种形式的管理员安全组来覆盖以将自己添加到其中。

非常感谢您的建议!

谢谢!

4

1 回答 1

0

这是为了回答您的问题,如果有其他方法可以限制页面访问,是的,您可以从 Web.config

在 Web.Config 文件中,您可以为每个页面添加以下内容:

<authentication mode="Windows" />

<location path="MyPage1.aspx">
    <system.web>
      <authorization>
        <allow roles="ActiveDirectoryRoleName" />
        <allow users="DOMAIN\USER1, DOMAIN\USER2" />
        <deny users="*" />
      </authorization>
    </system.web>
</location>

或者,如果您想对网站进行全局限制,则:

<authentication mode="Windows" />

<authorization>
    <allow roles="ActiveDirectoryRoleName" />
<allow users="DOMAIN\USER1, DOMAIN\USER2" />
    <deny users="*" />
</authorization>
于 2012-12-04T06:26:47.123 回答