Jakarta ee 如何使JBoss EAP LDAP登录模块将LDAP uid属性设置为主体名称

Jakarta ee 如何使JBoss EAP LDAP登录模块将LDAP uid属性设置为主体名称,jakarta-ee,jboss,ldap,jboss7.x,Jakarta Ee,Jboss,Ldap,Jboss7.x,我在JBoss EAP 7.1中设置了一个安全域,以使用JEE声明性安全性对用户进行身份验证: <security-domain name="mutuaLdap" cache-type="default"> <authentication> <login-module code="LdapExtended" flag="required"> <module-option name="java.naming.

我在JBoss EAP 7.1中设置了一个安全域,以使用JEE声明性安全性对用户进行身份验证:

<security-domain name="mutuaLdap" cache-type="default">
    <authentication>
        <login-module code="LdapExtended" flag="required">
            <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
            <module-option name="java.naming.provider.url" value="ldap://xxx:389"/>
            <module-option name="java.naming.security.authentication" value="simple"/>
            <module-option name="bindDN" value="xxx"/>
            <module-option name="bindCredential" value="xxx"/>
            <module-option name="baseCtxDN" value="dc=xxx,dc=com"/>
            <module-option name="baseFilter" value="(uid={0})"/>
            <module-option name="roleFilter" value="(&amp;(cn=%v)(objectclass=groupofuniquenames))"/>
            <module-option name="roleAttributeID" value="cn"/>
            <module-option name="defaultRole" value="user"/>
        </login-module>
    </authentication>
</security-domain>

在我的应用程序中,我使用一个登录表单,用户在其中传递他的凭证。LDAP登录正常工作,忽略用户输入的uid大小写,但问题是,我需要主体使用用户LDAP条目的uid属性的确切值,例如:

  • 用户登录表单:someUser
  • LDAP用户:uid=“SOMEUSER”,ou=xxx,dc=xxx,dc=xxx
  • JBoss正在将Principal.name值设置为登录表单->someUser但我需要someUser中使用的任何用户

  • 如何实现此功能?

    为了实现此功能,必须创建自定义登录模块