LDAP接続文字列はどうすればわかりますか?


108

私たちは、Active Directoryを実行している企業ネットワーク上にあり、LDAPの一部(実際にはActive Directoryメンバーシッププロバイダー)をテストしたいと考えていますが、これまでのところ、LDAP接続文字列が何であるかわかりません。私たちがそれを見つける方法を知っている人はいますか?私たちが知っている唯一のものは、私たちがいるドメインです。

回答:


101

ASP.NET Active Directoryメンバーシッププロバイダーは、指定されたユーザー名、パスワード、および「接続文字列」を使用して、Active Directoryへの認証済みバインドを行います。接続文字列は、LDAPサーバーの名前と、指定されたユーザーが存在するコンテナオブジェクトの完全修飾パスで構成されます。

接続文字列はURIで始まりますLDAP://

サーバー名には、そのドメインのドメインコントローラーの名前を使用できます。たとえば、「dc1.corp.domain.com」とします。これでここまでがわかりLDAP://dc1.corp.domain.com/ます。

次のビットは、バインディングユーザーが配置されているコンテナオブジェクトの完全修飾パスです。「管理者」アカウントを使用しており、ドメイン名が「corp.domain.com」であるとします。「管理者」アカウントは、ドメインのルートの1レベル下にある「ユーザー」という名前のコンテナにあります。したがって、「Users」コンテナの完全修飾DNは次のようになりますCN=Users,DC=corp,DC=domain,DC=com。バインドするユーザーがコンテナではなくOU内にある場合、パスには「OU = ou-name」が含まれます。

したがって、という名前のService AccountsOUのサブOUであるという名前のOUでアカウントを使用すると、という名前Corp ObjectsのドメインのサブOUのcorp.domain.com完全修飾パスになりOU=Service Accounts,OU=Corp Objects,DC=corp,DC=domain,DC=comます。

LDAP://dc1.corp.domain.com/バインドユーザーがいるコンテナへの完全修飾パス(たとえばLDAP://dc1.corp.domain.com/OU=Service Accounts,OU=Corp Objects,DC=corp,DC=domain,DC=com)と組み合わせて、「接続文字列」を取得します。

(ドメインコントローラーの名前ではなく、接続文字列でドメインの名前を使用できます。違いは、ドメインの名前がドメイン内の任意のドメインコントローラーのIPアドレスに解決されることです。メンバーシッププロバイダーが機能するために稼働している単一のドメインコントローラーに依存することはありませんが、名前がたまたまネットワーク接続が不安定なリモートロケーションのDCに解決すると、メンバーシップに問題が発生する可能性がありますプロバイダーが働いています。)


少なくともSBS 2008では、OUの文字列内の標準の「OU」プレフィックスに準拠し始めているように見えます。CN= Your Name、OU = Users、DC = example、DC = local機能レベルを実行しています2003.
gravyface

素晴らしい答え。クエリアカウントのログイン詳細を接続文字列で外部ドメインコントローラーに提供できますか?
ダン

つまり、ActiveDirectoryにアクセスするリモートマシンは、独自のドメイン内にある必要があるということですか?ローカルマシンがそのドメインにない場合はどうなりますか?マシンがワークグループにある場合、ユーザーを認証するために2つの資格情報を渡す必要がありますか?つまり、1つはWindowsServerマシンにログインし、もう1つはActiveDirectoryユーザーのユーザー名とパスワードを検証することです。私は正しいですか?
ディネッシュクマールP

@DineshKumarP:解析に少し問題があります。メンバーシッププロバイダーは、Active Directory(AD)の有効な資格情報を使用して、ディレクトリにバインドします。メンバーシッププロバイダーを実行しているコンピューターはADドメインのメンバーである必要はありませんが、ADが機能するためにはADからの有効な資格情報を使用して構成する必要があります。
エヴァンアンダーソン

2
@ArthurRonald-特権のないユーザーは、デフォルトでActive Directoryにバインドして照会できます。実際、特権のないユーザーを使用するのがおそらく最善です。Active Directoryにはかなり豊富なACLモデルがあり、オブジェクトと属性へのアクセスを非常にきめ細かく制御できます。必要なことを実行するのに十分な特権を持っているが、それ以上のアカウントを使用してバインドする必要があります。
エヴァンアンダーソン

23

タイプdsquery /?コマンドプロンプトインチ

例:dsquery user -name Ja*Ja *で始まる名前を持つすべてのユーザーの接続文字列を取得します。


私はこのアプローチが好きで、OUなどの正しい順序を提供します。わかりやすくするために、これを使用するには、LDAP://dc1.corp.domain.com/とコマンドからの出力を取得し、それらを組み合わせて、簡単にLDAP文字列を形成します。
RandomUs1r 14

3
このコマンドを使用するには、どのツールをインストールする必要がありますか?
Pred

Pred、この回答をご覧ください。
Stas Bushuev

18

Softerraのこのツールを使用して(優れたフリーウェアLDAPブラウザーを作成)、現在ログインしているユーザーからユーザーDNを取得します:http ://www.ldapbrowser.com/download.htm


ステップ1:「資格情報」ステップで、「現在ログインしているユーザー(ActiveDirectoryのみ)」を選択します。ステップ2:接続が作成されたら、そのプロパティで[エントリ]タブに移動し、URLをコピーします。ステップ3:ErJabのソリューションで見つかったDNと共にそのURLを使用します。
ニコラスラウル

7

OUを入力する正しい方法を見つけるのに常に問題がありました。このコマンドdsquery ou domainrootは、ドメイン内のすべてのOUの正しい名前のリストを提供します。これが大規模な組織に役立つかどうかはわかりません。



4

ADSIeditを開くと、[接続先]を選択したときにパスが表示されます。

ここに画像の説明を入力してください



1

私は最も簡単な方法を見つけました

からも見つけることができます

Active Directoryサーバー->組織単位OUの選択->右クリック->プロパティ-> AttributeEditor-> DistinguishedName

これらはMicrosoft Windows Server 2012 R2から取得しました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.