在我使用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非常感谢你的建议!!
谢谢!
答案 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>