设置
我的 WCF 网络服务在 Windows Server 2012 上的 IIS 8.0 上运行,在具有多个域的环境中:
- 服务器
- 客户老
- 新客户
应用程序池使用SERVER
域中的服务帐户运行(比如说SEVER\WsSvc01
)。
我的 WCF webservice 使用PrincipalPermissionAttribute
这样的:
[PrincipalPermission(SecurityAction.Demand, Role = "grp_WsUsers")]
public string Echo(string message)
{
return string.Format("{0:o}: {1}", DateTime.Now, message);
}
grp_WsUsers
两个客户端域中都有一个活动目录组:
- CLIENT-OLD\grp_WsUsers
- 新客户\grp_WsUsers
问题
属于该CLIENT-OLD
域成员的域中的用户可以访问该域中的用户CLIENT-OLD\grp_WsUsers
不能访问的服务CLIENT-NEW
解决方法
如果我明确包括这两个组,所有用户都可以访问该服务
[PrincipalPermission(SecurityAction.Demand, Role = "CLIENT-OLD\\grp_WsUsers")]
[PrincipalPermission(SecurityAction.Demand, Role = "CLIENT-NEW\\grp_WsUsers")]
public string Echo(string message)
{
return string.Format("{0:o}: {1}", DateTime.Now, message);
}
问题
这里发生了什么?如果我必须明确指定组,为什么它首先会起作用?如何解决两组之间的差异?