正確な LDAP URL を使用してユーザーを検索する方法を理解しています
LDAP://domain/CN=Username,OU=Users,DC=domain,DC=com
しかし、特定の OU を調べずにユーザーを見つける必要がある場合はどうでしょう。ドメイン全体を検索するにはどうすればよいですか?
正確な LDAP URL を使用してユーザーを検索する方法を理解しています
LDAP://domain/CN=Username,OU=Users,DC=domain,DC=com
しかし、特定の OU を調べずにユーザーを見つける必要がある場合はどうでしょう。ドメイン全体を検索するにはどうすればよいですか?
.NET 3.5 以降を使用している場合は、PrincipalSearcher
クラスを確認する必要があります。
' create your domain context
Dim ctx As New PrincipalContext(ContextType.Domain)
' define a "query-by-example" principal - here, we search for a UserPrincipal
' and with the first name (GivenName) of "Bruce" and a last name (Surname) of "Miller"
Dim qbeUser As New UserPrincipal(ctx)
qbeUser.GivenName = "Bruce"
qbeUser.Surname = "Miller"
' create your principal searcher passing in the QBE principal
Dim srch As New PrincipalSearcher(qbeUser)
' find all matches
For Each found As var In srch.FindAll()
' do whatever here - "found" is of type "Principal" - it could be user, group, computer.....
Next
まだお読みでない場合は、.NET Framework 3.5 でのディレクトリ セキュリティ プリンシパルの管理に関するMSDN の記事を必ずお読みくださいSystem.DirectoryServices.AccountManagement
。または、System.DirectoryServices.AccountManagement 名前空間に関する MSDN ドキュメントを参照してください。
もちろん、必要に応じて、作成した「例によるクエリ」ユーザー プリンシパルに他のプロパティを指定することもできます。
DisplayName
(通常: 名 + スペース + 姓)SAM Account Name
- Windows/AD アカウント名User Principal Name
- "username@yourcompany.com" スタイル名の任意のプロパティを指定し、UserPrincipal
それらを の「例によるクエリ」として使用できますPrincipalSearcher
。
または、特定のユーザーだけを見つけたい場合は、次を試してください。
' find a user
Dim user As UserPrincipal = UserPrincipal.FindByIdentity(ctx, "SomeUserName")
' do something here....
If user IsNot Nothing Then
. .....
End If
LDAPパスからOU構造を省略してください。これにより、ドメインのルートに検索が設定されます。
LDAP://DC=domain,DC=com
フィルタを使用して特定のユーザーを検索します。
(&(objectClass=User)(cn=" & susername & "))