Wcf PrincipalPermissionAttribute要求来自多个域的相同角色 安装程序

Wcf PrincipalPermissionAttribute要求来自多个域的相同角色 安装程序,wcf,iis,windows-authentication,principalpermission,Wcf,Iis,Windows Authentication,Principalpermission,My WCF webservice在Windows Server 2012的IIS 8.0上运行,环境中有多个域: 服务器 老客户 新客户 应用程序池使用服务器域中的服务帐户运行(比如服务器\WsSvc01) 我的WCF Web服务使用如下PrincipalPermissionAttribute: [PrincipalPermission(SecurityAction.Demand, Role = "grp_WsUsers")] public string Echo(string messa

My WCF webservice在Windows Server 2012的IIS 8.0上运行,环境中有多个域:

  • 服务器
  • 老客户
  • 新客户
应用程序池使用
服务器
域中的服务帐户运行(比如
服务器\WsSvc01

我的WCF Web服务使用如下
PrincipalPermissionAttribute

[PrincipalPermission(SecurityAction.Demand, Role = "grp_WsUsers")]
public string Echo(string message)
{
    return string.Format("{0:o}: {1}", DateTime.Now, message);
}
两个客户端域中都有一个
grp\u WsUsers
active directory组:

  • CLIENT-OLD\grp\wsu用户
  • CLIENT-NEW\grp\wsu用户
问题 属于
CLIENT-OLD\grp\WsUsers
成员的
CLIENT-OLD
域的用户可以访问
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);
}
问题:
这里发生了什么?如果我必须明确指定组,那么首先为什么它可以工作?我怎样才能找出这两组人之间的差异呢?

所以我终于找到了答案:

PricipalPermissionAttribute
调用的权限检查只需查找第一个组,该组的名称位于它遇到的任何域中,然后停止,即使当前用户没有该组

因此,在我的例子中,实现首先在
CLIENT-OLD
域中查找该组,并且由于存在一个名称有问题的组,因此会检查该特定组的所有用户(我假设为组SID)