簡體   English   中英

Java JNDI-在Microsoft LDAP中更改用戶密碼時的限制-身份驗證異常

[英]Java JNDI - limitation when changing user's password in Microsoft LDAP - authentication exception

這是我在這里的第一篇文章。 我試圖在互聯網上搜索我的問題,但沒有找到答案。 希望您的專業知識能對我有所幫助。 特別是在使用Microsoft LDAP時,我注意到一些煩人的事情。 在LDAP中,當用戶必須在下次登錄時重置密碼時,會有一個標記“用戶必須在下次登錄時重置密碼”,將其稱為標記X。為用戶設置X時,如果我們嘗試更改該用戶的密碼,則無法。 我想使用用戶名而不是其他管理用戶來執行此操作-因此,該用戶必須更改通行證,但是如果您嘗試更改通行證,則無法..這就是我正在做的事情:

Hashtable env = new Hashtable();

env.put(Context.SECURITY_AUTHENTICATION, <auth_mech>);
env.put(Context.SECURITY_PRINCIPAL, <principal>);
env.put(Context.SECURITY_CREDENTIALS, <pass>);

DirContext ctx = new InitialDirContext(env);

嘗試創建新的初始上下文時:身份驗證異常[LDAP:錯誤代碼49-80090308:LdapErr:DSID-0Cxxxxxx,注釋:AcceptSecurityContext錯誤,數據773,vece]數據773意味着-用戶必須在下次登錄時更改其密碼。 因此,在以下情況下:-用戶必須在下次登錄時更改其通行證-用戶通行證已到期-用戶帳戶已禁用-用戶帳戶已到期,依此類推,我們無法更改用戶密碼...在我看來,這是一個很大的限制。

我也想問一問,是否有人知道Micrisoft遵循的有關此錯誤代碼的規范。 我知道錯誤代碼49是常規錯誤代碼,並且符合規范,但是該數據773、532是所有LDAP的常規數據,因為我認為它們是特定於供應商的,這又很煩人。

PS我在這里發現了類似的問題: 在Java中更改AD用戶的過期密碼,但是使用AD Super用戶可以解決每個人的密碼時,此問題已解決,但是我不希望那樣,我需要用戶能夠更改自己的密碼,這反映在LDAP密碼歷史記錄中。

謝謝

如果用戶無法登錄,則無法更改自己的密碼。 如果他的密碼已過期,則必須將其重置為管理員, 然后使用該密碼登錄他並強制他立即更改它。

@Valentin Mezev:使用帳戶Admin getLdapContext ,使用此上下文更改另一個帳戶的密碼。

例:

LdapContext context = getLdapContext(url, dn_admin, pass_admin);
context.modifyAttributes(dn_change, modificationItems);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM