【发布时间】:2013-08-29 13:55:10
【问题描述】:
我已经在 Glassfish 中配置了一个 LDAP 领域,并且身份验证工作正常。
现在我想知道如何将 Principal.getName() 返回匹配到我的 LDAP 用户对象的某个属性。我以为它会默认使用诸如“givenName”之类的东西,但它会返回用于身份验证的用户名。
我不介意额外访问 LDAP 服务器以获取其他信息,但我不想在我的应用程序中保留 LDAP 连接属性,而是想注入安全领域(如果有可能的话) 并使用自己的连接。
所以,简而言之,问题是:
1) 我可以将其他属性映射到领域返回的 Principal 吗?
2) 如果第一个是不可能的,那么我如何重用领域的信息来连接到 LDAP 服务器并获取我需要的数据?
提前感谢您的任何帮助或建议。
【问题讨论】:
-
您是否提供自己的
LoginModule? -
不,我想避免这种情况并尽可能使用与容器的无缝集成,因为相同的工具将部署在不同的容器(Glassfish、WebLogic 和 JBoss)上。我能做到的最“符合规范”,就越好。
-
@javabeats JASPIC auth 模块是标准的 Java EE 6 东西。它像 Servlet 或 Filter 一样包含在战争中,并且作为标准 API 的一部分,它与 GlassFish、WebLogic 和 JBoss 一起使用。
-
我的印象是我必须扩展特定的类来构建一个 LoginModule,因此,我必须为每个容器提供一个实现。很高兴知道事实并非如此。感谢您的建议!
标签: java active-directory glassfish ldap ejb