- PR -

Active DirectryにLDAPでアカウント作成、パスワードがセットできない

1
投稿者投稿内容
きのこ
ぬし
会議室デビュー日: 2004/09/01
投稿数: 256
投稿日時: 2004-10-07 04:50
いつもお世話になってます。
現在WEBをつかっていろいろなActive Directryにユーザーアカウントをつくる
ASPをつかおうとしてます。
Robbie Allen著のMAnaging Enterprise Active Directry Service
のVBScriptのサンプルコードをつかってテストしてますが、パスワードの設定でうまくいきません

ユーザーアカウントは正常に作成され、情報もはいるのですが
パスワードの設定に失敗して結局、
アクティブヂィレクトリのツールで初期パスワードを設定しなおさなければならず
困ってます。

どうしたら、パスワードの初期設定がうまくいくでしょうか?
またパスワードの初期設定がうまくいってないのでASP上では
アカウントの有効化も失敗しております。
ただアクティブヂィレクトリのツール上では有効になってますが
もちろん、アクティブヂィレクトリのツール上でパスワードを初期化するまで
はログインすることができません。
なにかヒントがありましたらどうか教えてください

=====テストASPコード=======
<%@LANGUAGE="VBSCRIPT" CODEPAGE="932"%>
<%
On Error Resume Next

new_user= "Taro.Yamada"
dim user, passwd, new_user
user="Admin@MYCOMP.COM"
passwd="AdminPass"

Dim ldapObj, contADsPath, contObj
set ldapObj = GetObject("LDAP:")
contADsPath = "LDAP://AD.MYCOMP.COM:389/OU=Users,OU=Kanagawa,DC=MYCOMP,DC=COM"
Set contObj = ldapObj.OpenDsObject(contADsPath,user,passwd,1)

Set usrObj = contObj.Create("user","CN="&new_user)

usrObj.Put "sAMAccountName",new_user
usrObj.Put "userPrincipalName", new_user & "@MYCOMP.COM"
usrObj.Put "mail", new_user & "@MYCOMP.COM"
usrObj.Put "givenName", "Taro"
usrObj.Put "sn", "Yamada"
usrObj.Put "displayName", "Taro Yamada"
usrObj.SetInfo

If Err.Number Then
%>
Error Creating User<br>
<%
Else
%>
User Created<br>
<%
End If

usrObj.SetPassword(new_user)

If Err.Number then
%>
Password Set Error<br>
<%
else
%>
Password Set<br>
<%
end if

usrObj.Put "pwdLastSet", 0
usrObj.SetInfo

If ErrNumberr then
%>
Counter Reset Error<br>
<%
else
%>
Counter OK<br>
<%
END if

usrObj.AccountDisabled = false
usrObj.SetInfo

if Err.Number then
%>
アカウント有効失敗<br>
<%
else
%>
アカウント有効成功<br>
<%
end if
%>
きのこ
ぬし
会議室デビュー日: 2004/09/01
投稿数: 256
投稿日時: 2004-10-07 08:11
自己レスです。
パスワードの設定部分をあとにして、アカウント有効化だけをさきにやってみました。
相変わらずパスワードは設定ぜきません。
ちなみに環境はWindows2000 アクティブヂィレクトリにWindows2003のIIS6.0
でうごいているASPからLDAPの386でアクセスしてます
あいかわらず初期パスワードは設定できませんがブランクパスワードとして
アカウント自体は起動して初期パスワードが設定されていないという以外は
すべてうまくいってます。もともとJAVAのJINIでつくりこんで
JSPやサーブレットなどと連携させようとおもってたのですが
アクティブヂィレクトリのハッシュ暗号の仕様は非公開だそうなので
ASPを選んでみましたがこれだとあまりかわらないですね。
.NETがらみに投稿もよんでいますがいまいちヒントがつかめません
ASPもしくはVBで別マシンからアクセスしてパスワードまで設定成功している
ようでしたらどうかヒントを教えてください
よろしくお願いいたします
ゆいたん
ベテラン
会議室デビュー日: 2004/08/26
投稿数: 91
投稿日時: 2004-10-07 09:33
たけたんさんこんにちは。

私の持っている環境でやると、アカウントが無効になっていますが、
パスワードの設定はできているようです。
# 有効化する方法はお持ちのようなのでそれをすればいいんですよね?

クライアントからログオンするとパスワードの変更を求められますし、
そのダイアログで入力する古いパスワードはスクリプトで設定した
パスワードでした。

開示されているスクリプトで変更したのはパスワードがユーザー名と
同一(変数)でしたのでそこを"password"という感じで変更したのと
ドメインを替えたくらいです。

私なら、同等のことをやるのにLDAPではなくWinNT名前空間使います。
そちらは検討できないのでしょうか。
# WinNT名前空間使うならサンプルも結構転がっていると思いますよ。

的外れならごめんなさい。

以上
きのこ
ぬし
会議室デビュー日: 2004/09/01
投稿数: 256
投稿日時: 2004-10-07 15:43
ゆいたんさん
情報ありがとうございます。
確かにWinNT空間でやろうとしていますが、いろいろしらべると
例のコードのようにサイトごとにユーザーをふりわけることができない
ようなのでLDAPをつかったしだいです。
WinNTだとドメインの直下にユーザーがくるのですが
ADの構造だと、ドメインの下に組織をいれて、管理できたのが魅力でした。
すこしWinNTの空間でやってみます。ありがとうございました。
.NETでもLDAPでアクセスした場合のINVOKE関数
かなにかでやるパスワード設定はくせもののようで、明確な答えがなく
MSではバグとかいってました(ただSP3で修正されているので私の環境では
原因とはかんがえられないのですが)
できるかどうかわかりませんが、
LDAPでオブジェクトをつくってWInNT空間でアクセスしなおして
パスワードだけ再設定できるかやってみます
ありがとうございました。
ちなみにゆいたんさんのうまくいった環境(Active Directry)
はどのような環境でしょうか?
ASPはActive DIRECTRYとは別マシンで実行されましたでしょうか?
質問ばかりですみません。
ゆいたん
ベテラン
会議室デビュー日: 2004/08/26
投稿数: 91
投稿日時: 2004-10-07 21:00

> 例のコードのようにサイトごとにユーザーをふりわけることができない
> ようなのでLDAPをつかったしだいです。
OUを振り分けることはLDAP名前空間でないと確かにできないかもしれないですね。

> ちなみにゆいたんさんのうまくいった環境(Active Directry)
> はどのような環境でしょうか?
ActiveDirectoryはWindows2000ServerSP4です。
ASPを実行したIISは普段使っているクライアントのWindows2000ProSP4になります。
1

スキルアップ/キャリアアップ(JOB@IT)