Security 如何在使用Glassfish登录后从LDAP主体(用户)获取其他属性';什么是LDAPRealm?

Security 如何在使用Glassfish登录后从LDAP主体(用户)获取其他属性';什么是LDAPRealm?,security,jsf,authentication,glassfish,ldap,Security,Jsf,Authentication,Glassfish,Ldap,在用户成功登录到我的应用程序(该应用程序运行在配置了LDAP域的Glassfish上)后,我如何从他那里获取属性 以下是我的设想: 我有一个LDAPRealm配置在我的Glassfish中,工作正常 我使用基于表单的身份验证。表单是一个JSF页面,它也可以正常工作 我有一个LoginBean,可以这样登录用户: HttpServletRequest req = (HttpServletRequest) FacesContext .getCurrentInstance() .getExterna

在用户成功登录到我的应用程序(该应用程序运行在配置了LDAP域的Glassfish上)后,我如何从他那里获取属性

以下是我的设想:

  • 我有一个LDAPRealm配置在我的Glassfish中,工作正常
  • 我使用基于表单的身份验证。表单是一个JSF页面,它也可以正常工作
  • 我有一个LoginBean,可以这样登录用户:

    HttpServletRequest req = (HttpServletRequest) FacesContext
    .getCurrentInstance()
    .getExternalContext()
    .getRequest();
    req.login(this.user, this.password);
    Principal p = req.getUserPrincipal();
    
我的问题是:我如何获得,比如说,这个委托人的电子邮件、givenName(或我的LDAP提供的任何其他属性)

(我在谷歌上搜索了很多次,但还是没找到运气)


提前感谢。

所有内容都应该在王国创建的
主题中。继续找,什么都找不到。如果您知道答案,我非常感谢您告诉我。我自己没有使用GlassFish特定的安全性,但是从和[LDAPLoginModule]()的源代码来看,恐怕只有dn和组相关属性被检索并作为
主体插入
主题中。如果是这样,您需要至少扩展专有的JAAS登录模块,或者实现一个标准的
javax.security.auth.message.module.ServerAuthModule
,以便在
主题
中插入额外的
主体
来封装必要的LDAP属性(或者一个“富”
主体
)。或者忘记标准安全性,从应用程序中重新查询LDAP,或者让JavaEE外部的安全框架来为您解决这个问题?如果是的话,你能告诉我们怎么做吗?它应该都在领域创建的
主题中。继续找,什么都找不到。如果您知道答案,我非常感谢您告诉我。我自己没有使用GlassFish特定的安全性,但是从和[LDAPLoginModule]()的源代码来看,恐怕只有dn和组相关属性被检索并作为
主体插入
主题中。如果是这样,您需要至少扩展专有的JAAS登录模块,或者实现一个标准的
javax.security.auth.message.module.ServerAuthModule
,以便在
主题
中插入额外的
主体
来封装必要的LDAP属性(或者一个“富”
主体
)。或者忘记标准安全性,从应用程序中重新查询LDAP,或者让JavaEE外部的安全框架来为您解决这个问题?如果是的话,你能告诉我们怎么做吗?它应该都在领域创建的
主题中。继续找,什么都找不到。如果您知道答案,我非常感谢您告诉我。我自己没有使用GlassFish特定的安全性,但是从和[LDAPLoginModule]()的源代码来看,恐怕只有dn和组相关属性被检索并作为
主体插入
主题中。如果是这样,您需要至少扩展专有的JAAS登录模块,或者实现一个标准的
javax.security.auth.message.module.ServerAuthModule
,以便在
主题
中插入额外的
主体
来封装必要的LDAP属性(或者一个“富”
主体
)。或者忘记标准安全性,从应用程序中重新查询LDAP,或者让JavaEE外部的安全框架来为您解决这个问题?如果是,你能告诉我们怎么做吗?