1

私は、MINE と THEIRS の 2 つのドメインを持っています。MINE は私のローカル ドメインであり、THEIRS との一方向の信頼関係 (LDAPS ポート 636 を使用) を持っているため、MINE は THEIRS を信頼しますが、THEIRS は MINE を信頼しません。THEIRS のユーザーを MINE のグループに追加し、THEIR のユーザーを MINE ネットワーク上のマシンやアプリケーションにログインさせることができます。信頼は適切に機能しているようです。

WAN 経由の接続をテストするために、小さな .Net アプリケーション (ASP.Net ではない) を作成しています。MINE のグループに THEIRS のユーザーが表示されないアプリが 1 つあります。SharePoint などの他のアプリは問題なく動作します。

PrincipalContext、UserPrincipal、GroupPrincipal などの System.DirectoryServices.AccountManagement オブジェクトで ASP.Net 4 オプションを使用してみました。クイック コード スニペット

    PrincipalContext domainContext = GetDomainContext(DomainName, ConnectionPort,
        UseSpecifiedCredentials, Credentials);

    GroupPrincipal theGroup = GroupPrincipal.FindByIdentity(domainContext,
        IdentityType.SamAccountName, GroupName);

    PrincipalCollection theUsers = theGroup.Members;

    var users = from u in theUsers
                select u.Name;

    return users.ToArray();

MINEに直接接続すると、すべてうまく機能します。この問題は、THEIRS に接続する際に発生します。LDAPS トラフィックの一方向の信頼がエラーを返しています。

System.DirectoryServices.Protocols.LdapException: The LDAP server is unavailable.

そこで、DirectoryEntry、DirectorySearcher などを使用して .Net 2 のバリエーションに切り替えます。これは、実際には THEIRS ドメインに対して機能します。

    List<string> userNames = new List<string>();
    string searchString = string.Format("(sAMAccountName={0})", GroupName);
    SearchResult result = SearchAD(DomainName, ConnectionPort, searchString);

コードで偽装を使用して、THEIRS ドメインに直接接続できます。

MINE でグループを照会すると、ユーザー アカウントではなく、THEIRS からユーザーの SID が返されます。

The following users are a member of testGroup:
CN=S-1-5-21-....,CN=ForeignSecurityPrincipals,DC=MINE,DC=local
CN=S-1-5-21-....,CN=ForeignSecurityPrincipals,DC=MINE,DC=local

これについても偽装を試み、THEIRS のユーザーとして実行しましたが、うまくいきませんでした。

ユーザーが MINE にいるときに、THEIRS からユーザー情報を取得するにはどうすればよいですか? 上記の CN/SID を取得して、THEIRS ドメインを照会する必要がありますか? .Net 4 の何が欠けていますか?

4

1 に答える 1

0

MINE で ASP.NET マシンを実行していると仮定します。

System.DirectoryServices.AccountManagement アプローチは、アプリケーションを実行するためにドメインのドメイン ユーザー アカウントを使用していることを確認した場合にのみ機能するはずです。通常の一方向の信頼構成では (選択的な認証の信頼を行っている場合を除きます)、THEIR のドメイン ユーザー アカウントには、MINE と THEIR の両方から読み取るアクセス許可が必要です。

自分のドメインのドメイン ユーザーを確実に使用するには、AppPool ID を設定するだけです。もちろん、偽装を使用してそれを行うこともできます。

于 2012-06-23T20:43:00.930 に答える