2011-07-27 13 views
10

次のような例がありますか。Active Directoryでのユーザー/グループのアクセス許可

  1. ユーザーをActive Directoryからプルします。
  2. ユーザーが所属するグループを取得します。
  3. 各グループに割り当てられているアクセス許可の一覧を取得します。

これは単純なタスクのようですが、私は解決策を見つけることができません。

全体的な目標は、カスタムアクセス許可を割り当てて、アプリケーション内のアクセス権を制御することです。

+0

どの言語?? – TheGeekYouNeed

+0

私は.NET/C#でActive Directory APIを使用しています。 – user802165

答えて

13

.NET 3.5以降の場合は、System.DirectoryServices.AccountManagement(S.DS.AM)名前空間を確認する必要があります。ここではそれについてのすべてを読む:

基本的に、あなたはドメインコンテキストを定義し、簡単にADのユーザーおよび/またはグループを見つけることができます:

// set up domain context 
PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 

// find a user 
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName"); 

if(user != null) 
{ 
    // do something here....  
} 

// find the group in question 
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "YourGroupNameHere"); 

// if found.... 
if (group != null) 
{ 
    // iterate over members 
    foreach (Principal p in group.GetMembers()) 
    { 
     Console.WriteLine("{0}: {1}", p.StructuralObjectClass, p.DisplayName); 
     // do whatever you need to do to those members 
    } 
} 

新しいS.DS.AMにより、ADのユーザーやグループで簡単に遊ぶことができます。

最後のポイント:権限。これらはActive Directoryに格納されていないため、ADコードからそれらを取得することはできません。

権限は個々のファイルシステム項目に格納されます。ファイルやディレクトリ、またはその他のオブジェクト(レジストリキーなど)を含むことがあります。 ADグループまたはユーザーアカウントを持っている場合、そのSID(セキュリティ識別子)プロパティーを読むことができます.SIDはWindowsのACL(アクセス制御リスト)に表示されますが、ユーザーまたはグループからは、すべてを取得するメカニズムはありませんマシン/サーバーのどこにいてもかまいません。

ファイルとディレクトリのパーミッションは、 FileInfoDirectoryInfoクラスに.GetAccessControl()メソッドを使用して取得する:それらの意味を読み解くとなっ

FileInfo info = new FileInfo(@"D:\test.txt"); 
FileSecurity fs = info.GetAccessControl(); 

DirectoryInfo dir = new DirectoryInfo(@"D:\test\"); 
DirectorySecurity ds = dir.GetAccessControl(); 

はまったくまったく違う話です!

+0

それは私の疑いでした。ご協力ありがとうございました。 – user802165

関連する問題