前一個 post 我說我用 Cyrus-SASLauthd 去查 MS-Windows 2003 AD 上面的密碼. 為什麼不用 pam_ldap 呢? 這東西不是應該更好更有彈性嗎?
的確是這樣的, PAM 的確是我一開始就想到要用的 solution, 也是 MS 文件裡面所提到的工具. 不過經過很長一段時間的測試 (debug) 發現, pam_ldap 要跑的好的條件是 DN 裡面沒有中文... Orz
DN 就是 CN=ylchang, OU=office, DC=company, DC=com 這一串東西, 這樣的 DN 如果在英語系的環境裡面那當然是快樂天堂. 但是非常不幸的是, 那個朋友的公司裡面, CN 竟然帶中文字, 也就是他的 DN 看起來是長成 CN=張小毛, OU=office, DC=company, DC=com 這樣子, 這種樣子的 DN 不妙在哪裡呢?
因 為 pam_ldap 的作法是, 用 default binddn 先 bind 到 AD 上面, 然後依據 filter 的內容找出新的 DN, 再用新的 DN 試著 bind 到 AD 上面, 如果 bind 成功就算是密碼正確. 所以在上面的例子裡面, 第二次的 bind 就會把利用 default DN 查到的新 DN (CN=張小毛, OU=office, DC=company, DC=com) 拿來對 AD 做 bind, 可是在查找的過程中, 中文字串『CN=張小毛』已經在轉碼的過程給破壞掉了, 所以不論怎樣搞都沒有辦法利用新的 DN 去 bind AD 成功...
這部分我暫時找不出解法, 加上我的目的只是要確定密碼正確, 還不需要找出 home directory 之類的帳號資料, 所以就用 Cyrus-SASLauthd 上了. 等我有空在來看看 pam_ldap 對於內含中文的 DN 該如何解決.
No comments:
Post a Comment