概要

ADSI (Active Directory Service Interface) は、COM (Component Object Model) に準拠している、ディレクトリ操作のための API (Application Program Interface) です。ADSI を使用することによって、Visual Basic や Visual C++ などから、ディレクトリサービスにアクセスし、情報の取得や、変更を行うことができます。ASP (Active Server Pages) と連動させれば、Web ページを利用したドメインの管理が可能です。

 

環境

Windows 2000 の場合は、標準で ADSI をサポートしているので、何もインストールすることなく実行できます。Windows NT 4.0 や Windows 98 の場合、以下から ADSI をインストールする必要があります。また、ADSI SDK も同時にインストールしたほうが、開発が大変楽になります。

ADSI2.5 http://www.microsoft.com/ntserver/nts/downloads/other/ADSI25/default.asp

* 上記に各国対応のモジュールがダウンロード可能です。Windows NT は x86 と記述されています。
* Windows 9x に Windows 2000 Server CD-ROM に付属されている dsclient.exe (Active Directory Client) に ADSI2.5 が含まれているため、Windows 9x では dsclient.exe をインストールするだけで、ADSI や Active Directory に対応できます

 

サービスプロバイダ

サービスプロバイダは、ディレクトリサービスにアクセスするためのプロトコルのようなもので、どういった形式でアクセスするかを決めるためのものです。Windows 2000 ドメインでは、WinNT プロバイダと LDAP プロバイダが使用できます。LDAP プロバイダは、RFC1823 に示されている共通のプロバイダで、Windows 2000 ドメイン以外にも、UNIX や Lotus Domino など様々なネットワークで広く使用されています。

WinNT プロバイダと、LDAP プロバイダの違いは、
1. 取得できる情報量が LDAP の方が多い
2. LDAP では検索もできる
などが上げられます。

Windows NT ドメインの時で OS で管理できる情報が少なかったので、WinNT プロバイダで十分かもしれませんでしたが、Windows 2000 Active Directory では、OS 側で様々な情報を保持しており、ユーザー任意の情報を持たせることも可能です(この情報を管理している部分をスキーマといいます)。

Windows NT ドメインでは、LDAP プロバイダは使用できません。

 

基本構文

LDAP プロバイダ

LDAP://ServerName:PortNo/ObjectName

LDAP://CN=username, CN=Container, DC=DimainName, DC=com

LDAP://DomainNetBIOS/CN=username, CN=Container, DC=DomainName, DC=com

LDAP://Domain.com/CN=username, CN=Container, DC=DomainName, DC=com

LDAP://ServerName/CN=username, CN=Container, DC=DomainName, DC=com

その他、複数の指定方法があります。

WinNT プロバイダ

WinNT://DomainName/ComputerName/ObjedctName,ClassName

WinNT://DomainName/ObjedctName,ClassName

WinNT://ComputerName/ClassName

* ClassName は User や Computer などのオブジェクトクラスのこと。
* ClassName を書かなくても情報は取得可能。

* WinNT や LDAP の記述は、大文字小文字を識別します。
*
Active Directory ドメインの Windows NT クライアントで LDAP を使用するには、ServerName を直接指定しなくてはなりません。Windows NT クライアントは Active Directory クライアントではないためです。現在(2000/11/14)では Windows NT クライアントを Active Directory に対応させるモジュールはでていません。Windows 9x は dsclient.exe をインストールすることにより、Active Directory クライアントとして動作させることが可能です。Active Directory クライアントの対応状況は、下記の資料を参照してください。

ADSI 基本メソッド

以下の IADs メソッドは、覚えておけば役立ちます。後述のサンプルスクリプトでも使用しています。

メソッド 説明
GetInfo 取得したオブジェクト情報の内容をリフレッシュする。
PutInfo 変更したオブジェクト情報を、ディレクトリサービスに保存する。
Get プロパティの値を取り出す。
Put プロパティの値を保存する。

 

ADSI Viewer (Active Directory Browser)

ADSI Viewer についての簡単な使用方法について説明しています。

 

セキュリティ

ADSI でドメインや、コンピュータの情報にアクセスするには、それなりの権限が必要です。Visual Basic などのアプリケーションから、アクセスする場合には、ログオンしているユーザー情報で認証を行います。IIS を Web サーバーとして使用し、ASP を利用してアクセスを試みる場合、、デフォルトで匿名ユーザー(IUSR_machinename)で認証を行います。匿名ユーザーは、Guests グループのアカウントです。従って、IIS の設定で、以下の設定を行う必要があります。(下記は Windows 2000 の IIS5.0 での場合です)

  1. インターネットインフォメーションサービス を開きます。
  2. 認証方法を変更したいディレクトリ、またはファイルのプロパティを開きます。
  3. ディレクトリセキュリティ、もしくはファイルセキュリティを開きます。
  4. 匿名アクセスのチェックを外します。
  5. 認証済みアクセスから、適切なものを選択します。

IIS Service を実行しているサーバーがドメインコントローラではない場合、使用可能な管理者のセキュリティコンテキストを確立する必要があり、この場合、基本認証を使用します。[統合 Windows 認証] を使用することはできません。

各認証方法については、ヘルプを見てください。また、以下のマイクロソフト ドキュメントも参考になると思います。

JP184619 [IIS] IIS 4.0 を使用した Windows NT アカウントのパスワード変更方法

 

サンプルスクリプト

以下のサンプルを使用して、どういった感じで使用するか挙げてみます。参考にしてください。

このページのダウンロード  >> adsi.lzh
* 自分のテスト環境で行いたい場合は、このページごとダウンロードして、IIS のフォルダに入れてテストすることが可能です。

WinNT プロバイダを使用したユーザー情報の取得

LDAP プロバイダを使用したユーザー情報の取得

オブジェクトの持つプロパティを検出する

ユーザーの作成と削除

サービスの管理

ClonePrincipal (ADSI を利用した Windows 2000 アカウント移行ツールです。すごい簡単にですが、概要と使用方法を紹介します。)

このほかにも、ファイルの管理や、IIS の管理、Microsoft Exchange Server の管理などが可能です。これらについては、参考文書や参考書などをご覧下さい。

 

参考資料

Windows 95, Windows 98 および Windows NT Workstation 4.0 対応の Active Directory クライアント拡張機能

LDAP ADsPath

WinNT ADsPath

ADSI アーキテクチャ

ADSI を使っての Active Directory への簡単なアクセス

ADSI、ASP、およびいくつかのトリックによる仮想ディレクトリの自動作成 - Part 1

ADSI、ASP、およびいくつかのトリックによる仮想ディレクトリの自動作成 - Part 2

翔泳社 「ADSI ASP プログラミング」

ソフトバンク 「Windows 2000 Active Directory ドメイン構築ガイド」