カスタムMembershipProviderクラスでActive Directoryを使用して、ASP.NET 2.0イントラネットアプリケーションのユーザーを認証し、そのsidをプロファイルに関連付けますアプリケーション。ASP.NET - DirectoryEntry/SIDのプリンシパル/相対識別子(RID)を取得
ActiveDirectoryMembershipProvider
が使用される場合
SecurityIdentifier sid = (SecurityIdentifier)Membership.GetUser().ProviderUserKey;
string sidValue = sid.ToString();
/* sidValue = "S-1-5-21-XXXX-XXXX-XXXX-YY" */
を次のように私はそれを理解するように、MembershipUser
ためProviderUserKey
オブジェクトがYY
が名前空間内プリンシパル(また、グループ/ドメインとも呼ばれる)です。それは主要なYY
が含まれていない以外
カスタムのMembershipProviderを使用している場合、私はこのケースでsidValue
DirectoryEntryオブジェクト
DirectoryEntry entry = new DirectoryEntry(path, username, password);
SecurityIdentifier sid = new SecurityIdentifier((byte[])entry.Properties["objectSid"].Value, 0);
string sidValue = sid.ToString();
/* sidValue = "S-1-5-21-XXXX-XXXX-XXXX" */
のobjectSid
プロパティを使用してSIDを取得することができますが、同じです。
私の質問は2倍
- では、個人を一意に識別するために必要な主要ですか?
- DirectoryEntryオブジェクト(または
System.DirectoryServices
で利用可能なその他のクラス)からプリンシパルを取得できますか?
EDIT:
いくつかは、さらに({1}{2})を読み終わったので、私は今、ユーザーが別のグループ/ドメインから移動された場合、SIDを変更することができることを知っています。これを踏まえて、をDirectoryEntry
Properties["objectGUID"]
に定義すると、ユーザーを一意に識別するのに適していますか?
objectGUIDは、アカウントのGUIDまたはディレクトリエントリが表すオブジェクトの種類のGUIDですか?また、各ディレクトリエントリプロパティの詳細を提供するドキュメントへのリンクもありますか? –
個々のアカウントのGUIDです。 ADSI編集MMCスナップイン(http://technet.microsoft.com/en-us/library/cc773354(WS.10).aspx)を使用している場合は、Active Directoryで確認できます。 – serialhobbyist
私はメインのポストへのリンクを追加しました。以前のリンクは少し混乱しているようでした。 DirectoryEntryオブジェクトまたはADオブジェクトのプロパティを必要としているかどうかはわかりませんでした。後者の場合、ADの人々は属性としてそれらについて話す傾向があります。したがって、ADクラスのインスタンス(userなど)には、displayNameなどの属性があります。 DirectoryEntryのインスタンスには、属性のコレクションとその値を含むPropertiesプロパティがあります。それはAttributes、IMOと呼ばれるべきです。 – serialhobbyist