Udostępnij za pośrednictwem


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

こんにちは、 ILM 一家のパパ(お父さん)です。
先月ブログ原稿更新翌日にインフルエンザに罹患してから、すっかりブログ更新をご無沙汰してしまいました。
皆様お待たせしました。お母さん(ういこさん)、本当にありがとう。

さて、久しぶりなので、脱メタボの進捗を自慢しちゃいます。
ダイエット始めてから 3ヶ月たちましたが、以下のように改善しました。

実施前

実施後

体重

75kg

67kg (-8kg)

体脂肪

24%

16%

体年齢 (※)

6 歳 +

2歳 -

ウエスト

32 インチ

28 インチ

内臓脂肪レベル

10

8

(※) 実年齢との比較による 

目標 63kg なのでもう少しです。リバウンドに気をつけつつ目標維持目指して頑張ります。
先週、健康診断だったのですが、やっぱり運動して体重が下がると劇的に改善しますね、中性脂肪もコレステロール値も危険域だったのですが、通常値に改善されました。
ということで、ダイエットの話はこれぐらいにして、そろそろ、本題をお話ししましょう。  

今回は ADSI プログラミングでユーザ認証を行う方法をご紹介します。  

VBScript で Getobject を用い LDAP 接続を行うような場合、認証を意識していない実装ではVBScript コードを実行するプロセスアカウント(Windowsログオンに使用したアカウント)を用いて Active Directory に接続する事となります。
ドメインアカウントでWindows ログオンしている環境や、ドメインに所属するクライアントPCであれば、認証を意識せず対象ドメインに対するActive Directory への接続認証は行えます。  
ここで、ドメインに所属せず、ローカルアカウントでログオンされているクライアントPCや、ログオンアカウントととは別のアカウントで Active Directory への接続を行いたい場合、今回ご紹介するような認証を意識した実装を必要とします。
ADSI では OpenDsObject メソッドを用いて、アカウント、パスワード、認証タイプを指定した接続が行えます。以下にスクリプト例をご紹介します。

       <スクリプト例>        domainName=Inputbox("Domain ?") ' (1)

       userName = InputBox("User ?") ' (1)

       Password = InputBox("Password ?") ' (1)

Set ObjDs = Getobject("LDAP:")
       Set ObjDsEntry = objDs.OpenDsobject("LDAP://" & domainName, _
                                       domainName & "\" & userName, _
                                       Password, 1 )

Wscript.Echo “認証OK”

このサンプルでは InputBox (' (1))を用い、ドメイン、ユーザ、パスワードを入力し、そのアカウントを持いて認証を実行します。入力内容は、Windows ログオンの際にドメインに接続する場合のドメインおよび、アカウント情報を用います。

       <入力の一例>         Doamin : fareast 
        User : ilmuser
        Password : password

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

このような実装で、Directory Server へアクセスするための適切な認証が実行可能です。
また、ドメインアカウントではなく、別な Directory Server で管理しているユーザオブジェクトでアプリケーションを独自に認証させたいような場合にも、用いられる手法です。
Active Directory ではなく、他の LDAP サーバを用いる場合は名前解決のされ方が異なりますので、またの機会でご紹介させていただきます。

痩せたことにより、ぽっちゃりラブの ういこ さんにがっかりされている
~ お父さんより ~