如何查找用户是否拥有服务中特定全局组的成员资格?

时间:2014-12-24 17:14:29

标签: c# asp.net wcf silverlight-5.0 windows-security

我似乎无法找到某个用户是 DeployUsersProduction 组的成员。这是我到目前为止所做的:

[OperationBehavior(Impersonation = ImpersonationOption.Required)]
public Modes GetDeployMode()
{
    bool isProd = false;

    WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent();
    if (windowsIdentity == null || windowsIdentity.Groups == null) { return Modes.DUS; }

    foreach (IdentityReference identityReference in windowsIdentity.Groups)
    {
        try
        {
            var reference = identityReference;
            string group = reference.Translate(typeof (NTAccount)).Value.Trim();

            if (!String.Equals(group, "DeployUsersProduction", StringComparison.OrdinalIgnoreCase)) { continue; }

            isProd = true;
            break;
        }
        catch (Exception ex)
        {
            // Silent catch due to the [Some or all identity references could not be translated]
            // error that sometimes occurs while trying to map an identity.
        }
    }

    return isProd ? Modes.Prod : Modes.DUS;
}

据我所知,我的所有配置,spn,db,perms等都是正确的。我只有一个用户应该返回Modes.Prod,而不是。

1 个答案:

答案 0 :(得分:0)

答案并非我的方法是错误的,事实上我需要在我的小组前面加上我正在搜索的域名:

if (!String.Equals(group, @"DOMAIN\DeployUsersProd", StringComparison.OrdinalIgnoreCase)) { continue; }

特别感谢@DJ KRAZE提供的链接,这些链接促使我编写了自己的控制台应用程序,输出了这些组,以便我能够解决这个问题!