[ADSIプログラミング] VBScript でユーザ認証してみよう (OpenDsobject) -2

こんにちは、 ILM 一家のパパ(お父さん)です。
今日の ILM一家のお昼は、少し足を伸ばして深大寺に蕎麦を食べに行きました。
深大寺近辺は落ち着いた雰囲気で、深緑と綺麗な庭園を眺めながらの食事はいいですね。
3人とも 天ざるを注文したのですが、お蕎麦も揚げたての天ぷらも美味しかったです。
ういこ さんも、ここでは言えない表現で食後の蕎麦湯を美味しそうに飲んでいました。
落ち着いた雰囲気のはずなのに、私とピロトを落ち着かなくさせることに、喜びを感じる様子の ういこ さんに、いつも もふもふ させられまくりです。

(※ ういこう注 : もふもふさせてません!)

さて、今回は 前回の VBscript でのユーザ認証 について、Active Directory、Windows 認証ではなく、LDAP サーバとLDAP基本認証を用いる場合について、ご紹介します。

Active Directory ではなく、ADAM(AD LDS) や 他の LDAPサーバを使用しているような場合、接続する LDAP パス表記は同じものの、認証に使用するユーザアカウントの表記を変更し、認証タイプを LDAP 基本認証を指示する設定とします。
Active Directory では DNS の以外にも複数の名前解決手法を試行するため、認証に使用するユーザアカウントについては
NetBIOS 名やホストを指定しないあいまいなアカウント表記を用いても名前解決できてしまう可能性がありますが、LDAP サーバでは distinguishedName  でユーザアカウントを名前解決させる必要があるためです。

前回のサンプルを、この点を考慮した形に変更してみましょう。

    <スクリプト例>
       ServerName=Inputbox("Server Name ?") 
       distinguishedName = InputBox("User distinguishedName ?") 
       Password = InputBox("Password ?") 

       Set ObjDs = Getobject("LDAP:")
       Set ObjDsEntry = objDs.OpenDsobject("LDAP://" & ServerName, _  
                                               distinguishedName, Password, 0 )
       Wscript.Echo “認証OK”

入力内容は、LDAP サーバ上の User オブジェクト、と設定パスワードとなります。

      <入力の一例>         ServerName : ilmtest01
        distinguishedName :  CN=ilmuser,CN=Users,CN=Partition1,DC=ILMTEST,DC=LOCAL"
        Password : password 

前回と同様、認証だけを試行するサンプルですので、認証に成功すれば “認証 OK” までが実行され、認証に失敗すれば、OpenDsObject 行でエラーになります。

このような、手法により ADAM(AD LDS) や 他の LDAPサーバを用いて、Windows ドメインを用いず、独自にユーザ認証を実装する事も可能です。

いつも ういこ さんにドキドキさせられている
~ お父さんより ~