通过本地Windows组进行WCF RIA授权

本文关键字:WCF RIA 授权 Windows | 更新日期: 2023-09-27 18:08:22

我目前正在为我的公司开发一个基于WFC RIA的Silverlight业务应用程序(仅限intranet使用(。我在尝试授权用户时遇到了几个问题。情况如下:

该应用程序正在我们的Windows域中运行,因此正在使用Windows身份验证,该验证已经运行良好。对某些域服务操作的访问应限于某个组的成员(比如"Admins"(。此组在承载应用程序的服务器上本地可用,并且已用于限制对SQL server实例的访问。无法将此组添加到域中并使其全局可用。

我知道我可以通过RequiresRole[]属性限制对域服务方法的访问。然而,问题是,用户的本地组成员身份没有加载到通过WebContext.Current.User可用的用户对象中,因此授权失败。

有什么变通办法或更好的方法吗?

提前感谢!

通过本地Windows组进行WCF RIA授权

您是否尝试在要限制的服务方法上设置"PrincipalPermission"属性?

[PrincipalPermission(SecurityAction.Demand, Role = "Admin")]
public string GetResult()
{
   return "result";
}

谨致问候,Arjen

我解决了我的问题。

我所做的是将AspnetDb数据库复制到我的服务器机器上的SQL Server实例。此数据库包含有关用户、角色等的所有信息,并由ASP.NET角色管理器用于授权目的。此数据库通常位于Web项目的项目文件夹中(在App_Data目录中(。要使新配置生效,您必须更改Web.config中的连接字符串(更多详细信息:http://weblogs.asp.net/scottgu/archive/2005/08/25/423703.aspx)。

我手动将新用户添加到数据库中。您在那里输入的用户名必须与Windows用户名匹配(例如DOMAIN''user_name(。然后,您可以向数据库中添加新角色,并为所有用户指定他们的特定角色。

ASP.NET角色管理器在应用程序启动时自动加载角色/用户,您可以通过RequiresRole[]属性限制对域服务方法的访问。

此外,还有一种基于角色成员身份动态显示/隐藏/启用/禁用用户控件的方法,请参阅此处:http://blogs.msdn.com/b/kylemc/archive/2010/05/04/authorization-sample-201.aspx