2013-05-01 32 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"); 
相关问题