再度質問を投稿します。
OS:WIN2003
ASP3.0(VBSCRIPT)
ASPでLDAPサーバーを使用してフォーム認証のプログラムを作成しています。
LDAPへの接続はできたのですが、
IDの状態、パスワードの有効期限の取り出し方がよくわかりません。
教えてください。
明確な答え、ヒントを出していただけた方に3000ポイントを進呈します。
よろしくお願いします。
ソースはぼかしています。
正常(0)errnumberはかえってくるようになったのですが、
以下の状態を取得したいのですが、ASPでのサンプルがないため、よくわかりません。
あと、もう少しなのですが、
状態(status)ACTIVE,ENACTVE、PASSWORD)、
PwdExpData(ユーザーパスワードの有効期限)
ポイントで釣って申し訳ありませんが明確な回答をいただけましたら300ポイント進呈します。
非常に困っています。
strPath = "LDAP://xxx.xxx.xxx.xxx:xxx/"
strUser = "cn=" & Request.Form("USERID") & ",ou=xxxx,ou=xxx,o=xxxx"
strPassword = Request.Form("PASSWORD")
Dim objDSO,objUser
Set objDSO = GetObject("LDAP:")
Set objUser = objDSO.OpenDSObject(strPath & strUser, strUser, strPassword, ADS_FAST_BIND)
If Err.Number <> 0 Then
'認証失敗
Else
'認証成功
End If
アカウントの状態はAccountDisabledではどうでしょう。
-------------------------------------------
(LDAPをSetするところまでは省略)
If objUser.AccountDisabled = false Then
Response.Write "アカウント無効"
Else
Response.Write "アカウント有効"
End If
-------------------------------------------
アカウントの有効期限は、AccountExpirationDateの値になります。
---------------------------------------------------------------
(LDAPをSetするところまでは省略)
Dim AccountExpiration
AccountExpiration = objUser.AccountExpirationDate
If err.number = -2147467259
Response.Write "有効期限は無期限です"
ElseIf AccountExpiration = "1970/1/1" Then
Response.Write "有効期限は無期限です"
Else
Response.Write "有効期限は" & AccountExpiration & "です"
End If
---------------------------------------------------------------
パスワードの有効期限はマイクロソフトサポートオンラインに
ちょうどいいものが見つかりましたのでリンクを記します。
http://support.microsoft.com/kb/323750/ja
蛇足ですが、VBScript(VBS)でパスワードの有効期限を入手するものを
昔作ったことがありましたので、いつか何かに使えたら使ってやってください。
※LDAPでは無い&ASPじゃまともに動かないので、万一WinNT://を使って何とかするには
Server.CreateObject("WScript.Shell") あたりを使って外部ファイルの実行を
あわせ技で使う必要があるかもしれません。
---------------------------------------------------------------
Dim MaxPwdAge
Set objNT = GetObject("WinNT://MachineName/UserName")
MaxPwdAge = objNT.Get("MaxPasswordAge")/86400
MsgBox("パスワード変更期限まで" & MaxPwdAge & "日")
lame-delegateさん
ご回答ありがとございます。
以下を試してみましたが、ステータスの情報を取得できませんでした。
①アカウント情報
アカウントが有効なユーザIDで下記を試したのですが、結果「アカウント無効」が表示されてしまいました。
If objUser.AccountDisabled = false Then
Response.Write "アカウント無効"
Else
Response.Write "アカウント有効"
End If
Response.End
②アカウントの有効期限
下記を試したのですが、アカウントの有効期限を取得できませんでした。(何も取得できませんでした)
Response.Write objUser.AccountExpirationDate
Response.End
③パスワードの有効期限
下記を試したのですが、パスワードの有効期限を取得できませんでした。(何も取得できませんでした)
Response.Write objUser.PasswordLastChanged
Response.End