簡體   English   中英

如何使用JNDI在Java中強制執行LDAP bindRequest?

[英]How can I enforce a LDAP bindRequest in java using JNDI?

我有到LDAP服務器(在這種情況下為Active Directory)的JNDI連接。 我還使用ctx.extendedOperation( new StartTlsRequest() )獲得安全連接。

在此連接上,我需要驗證憑據。 我可以使用登錄

ctx.addToEnvironment( Context.SECURITY_AUTHENTICATION, "simple" );
ctx.addToEnvironment( Context.SECURITY_PRINCIPAL, principal );
ctx.addToEnvironment( Context.SECURITY_CREDENTIALS, credentials );

但是,“ bindRequest”命令僅在對JNDI上下文執行的下一個操作上通過ldap發出。 但是,我對此無能為力。 我只需要檢查憑據。 有什么方法可以強制執行“ bindRequest”嗎?

否則,應該將動作用作自己的NOP嗎? 搜索不存在的對象,還是應該查詢某個存在或...的對象的某些屬性? 它需要快速,不應在服務器端創建任何工作,並且應使用盡可能少的帶寬。 (因為實際上從一開始就不應該采取必要的行動...)

問候,斯特芬

LdapContext.reconnect()執行LDAP綁定。

據我了解,一種解決方案是在目錄中查找主體,並使用以下過濾器進行搜索:

(&(objectCategory=person)(sAMAccountName=principal))

如果主體的格式為:“ user1”

(&(objectCategory=person)(userPrincipalName=principal))

如果主體的格式為:“ user1@dom.fr”

對於NO-OP操作,您只需搜索根DSE即可 那應該在服務器的內存中。 如果您有權訪問BIND請求和響應,則可以在BIND請求中包括授權身份請求控件。 如果服務器支持此請求控制(在這種情況下,它將在根DSE中列出),則服務器將在BIND響應中包括授權身份響應控制。 該響應控制將是連接的身份驗證標識。

暫無
暫無

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

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