[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 サーバを用いる場合は名前解決のされ方が異なりますので、またの機会でご紹介させていただきます。
痩せたことにより、ぽっちゃりラブの ういこ さんにがっかりされている
~ お父さんより ~