【问题标题】:PrincipalPermissionAttribute demand same role from multiple domainsPrincipalPermissionAttribute 要求来自多个域的相同角色
【发布时间】:2018-06-29 12:48:17
【问题描述】:

设置

我的 WCF 网络服务在 Windows Server 2012 上的 IIS 8.0 上运行,在具有多个域的环境中:

  • 服务器
  • 老客户
  • 新客户

应用程序池使用SERVER 域中的服务帐户运行(比如说SEVER\WsSvc01)。

我的 WCF 网络服务使用 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);
}

问题

这里发生了什么?如果我必须明确指定组,为什么它首先会起作用?如何解决两组之间的差异?

【问题讨论】:

    标签: wcf iis windows-authentication principalpermission


    【解决方案1】:

    所以我终于想通了:

    PricipalPermissionAttribute 调用的权限检查只是在它遇到的任何域中查找具有该名称的 first并在此之后停止,即使当前用户也是如此没有组。

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

    【讨论】:

      猜你喜欢
      • 2013-01-25
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2017-07-24
      • 1970-01-01
      相关资源
      最近更新 更多