0

双方向の信頼で設定された 2 つのドメインがあります。

ドメイン A には、メンバー (ユーザー A) を持つグループ (グループ A) があります。

ドメイン B には、グループ A (他のドメインから) をメンバーとするグループ (グループ B) があります。

私はチェックしています:

if(User.IsInRole(group B))
{
  // logging in as User A should provide access because this use is part of Group A which is part of Group B
}

しかし、それは機能していません。

ここで何が欠けていますか?

4

1 に答える 1

0

ユーザーとしてログインし、そのドメインに参加しているマシンで実行すると、これは失敗します。

        private static SecurityIdentifier GetGroupSid(string domainName, string groupName)
    {
        using (var d = Domain.GetDomain(new DirectoryContext(DirectoryContextType.Domain, domainName)))
        {
            using (var context = new PrincipalContext(ContextType.Domain, d.Name))
            {
                using (var group = GroupPrincipal.FindByIdentity(context, groupName))
                {
                    return group.Sid;
                }
            }
        }
    }
    [Test]
    public void should_check_role_with_sid()
    {

        var barDomain = "bar.example.com";
        var groupinBar = GetGroupSid(barDomain, "group_in_bar");
        var identity = WindowsIdentity.GetCurrent();
        var windowsPrincipal = new WindowsPrincipal(identity);
        Assert.That(windowsPrincipal.IsInRole(groupinBar), Is.True, "Checking role " + groupinBar);
    }
于 2015-07-07T15:25:11.137 に答える