簡體   English   中英

如何使用Java在ldap服務器中存儲密碼

[英]How to store password in ldap server using java

我需要使用Java代碼將密碼存儲在ldap服務器中。在存儲密碼時,我必須指定ldap可用的任何加密方法。

1)將密碼存儲在char []而不是String中在Java中字符串是不可變的,並且您無法擦除String的內容,因為對String的任何修改都會產生新的String。 另外,字符串也緩存在字符串池中,這存在將密碼以明文形式暴露給有權訪問Java應用程序內存的任何人的安全風險。 即使像Java應用程序的核心轉儲之類的事故,在/ tmp中生成內存轉儲也會使密碼受到實際威脅。 通過使用char [],您可以通過將女修道院設置為空白或其他任何可減少公開密碼的安全風險的字符來擦除女修道院。 有關更多信息,請參見為什么char數組比String更好,以便在Java中存儲密碼。

2)始終在應用程序中使用加密的密碼與上一步相比,這是更進一步的步驟,而不是將密碼或敏感信息以明文形式存儲,始終以加密或哈希格式存儲它們。 這樣可以減少向執行身份驗證時可以訪問應用程序內存的任何陌生人公開密碼的風險。

了解更多: http : //javarevisited.blogspot.com/2012/05/best-practices-while-dealing-with.html#ixzz3KGjhHlps

new BasicAttribute("password", passValue)

我認為我們不想指定..it自動加密為ldap配置

通過JNDI在LDAP中插入新條目時,需要通過提供其所有對象層次結構來創建條目。 對於inetOrgPerson,密碼位於名為userPassword的屬性中(核心架構中“ person”對象中的可選屬性)。

您必須根據您的案例,核心和inetOrgPerson模式,根據模式(包括元屬性,例如NAME,SUP,STRUCTURAL等,請參考URL)來創建多個屬性(在BasicAttributes對象中):

http://www.zytrax.com/books/ldap/ape/inetorgperson.html http://www.zytrax.com/books/ldap/ape/core-schema.html#organizationalperson

准備好對象后,請使用用戶context.rebind

注意:所有LDAP實現都不相同,例如,您可能會得到一些意外的結果,例如,在上述方法中,您將在Apace DS中的綁定對象中獲得其他屬性(非LDAP操作屬性)。 解決方法是使用Apache LDAP API(請參閱: http : //directory.apache.org/api/ )。 在MS ActiveDirectory中,您可能會遇到其他問題。 JNDI很好讀條目,但寫/輸入條目不是很好

暫無
暫無

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

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