2013-05-01 26 views
0

我有一個正確設置的J2SE應用程序,用於處理LDAP服務器的用戶驗證。但是,該URL在配置文件中是硬編碼的。在運行時動態設置userProvider,以便JAAS登錄到LDAP

例如userProvider="ldaps://host.domain.com:3269/DC=domain,DC=com"

我想通過查詢DNS SRV記錄來動態查找LDAP服務器。

一旦我找到一個LDAP服務器,我該如何在運行時動態設置JAAS userProvider屬性,而無需在配置文件中指定它?我看到的所有示例僅顯示來自配置文件的URL。 JavaDocs在這個問題上不太清楚。

+0

'userProvider'不是LDAP參數。它是你的應用程序的一個參數。 Java在哪裏設置它並不重要。 – EJP 2013-05-01 22:58:56

+0

但是,它是JAAS正確的參數嗎? JAAS會以任何其他方式接受userProvider屬性而不是外部配置文件嗎? (設置系統變量,在某處使用setter函數...) – 2013-05-02 19:08:54

+1

1.不,它是特定JAAS LoginModule的參數。不,你必須寫一個JAAS配置文件。 – EJP 2013-05-02 21:50:29

回答

0

感謝EJP,我走上了正軌。幸運的是,系統變量可以在配置文件中插入。 (Reference)

因此,我可以做這樣的事情在配置文件:

userProvider="ldaps://${ldap.host}/DC=domain,DC=com" 

在我的Java代碼,我設置了系統屬性 「ldap.host」:

System.setProperty("ldap.host","host.domain.com:3269"); 
相關問題