如何在Active Directory中创建管理员角色并限制应用程序中的页面

时间:2012-09-24 05:45:25

标签: c# asp.net active-directory web-config roles

在我使用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(用户名,“ADGroupName”)的唯一途径?

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

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

但是现在因为我是受限制的AD组的一部分,我不知道如何覆盖某种形式的Admin安全组来添加自己。

WOuld非常感谢你的建议!!

谢谢!

1 个答案:

答案 0 :(得分: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>