ピカチュウと申します。

再度質問を投稿します。
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

回答の条件
  • URL必須
  • 1人10回まで
  • 登録:
  • 終了:2008/07/08 19:36:29
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:lame-delegate No.1

回答回数85ベストアンサー獲得回数10

ポイント3000pt

アカウントの状態は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 & "日")

id:pikacyuu

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

2008/07/07 15:24:19

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません