我在wildfly中使用org.jboss.security.negotiation.AdvancedLdapLoginModule获取用户所属的组列表。要获取列表,我需要在配置中使用它:
<module-option name="baseFilter" value="(userPrincipalName={0})"/>
它传递登录名而不是{0}来与UPN匹配
UPN中的名称在FirstName.LastName@OUR.DOMAIN.COM中。我得到的登录名是FirstLetterOfFirstNameLastName@OUR.DOMAIN.COM(这是我们设置广告的方式)。
在AD中有samAccountName字段,它是FirstLetterOfFirstNameLastName,因此没有在末尾添加域名。
我的问题是-如何匹配用户名?有没有办法在配置中进行某种转换,以便我可以删除域名而仅使用用户名?
我的独立配置(相关部分)
<system-properties>
<property name="java.security.krb5.conf" value="/etc/krb5.conf"/>
<property name="java.security.krb5.debug" value="true"/>
<property name="java.security.disable.secdomain.option" value="true"/>
</system-properties>
<subsystem xmlns="urn:jboss:domain:security:1.2">
<security-domains>
<security-domain name="other" cache-type="default">
<authentication>
<login-module code="Remoting" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
<login-module code="RealmDirect" flag="required">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="host" cache-type="default">
<authentication>
<login-module code="Kerberos" flag="required">
<module-option name="storeKey" value="true"/>
<module-option name="useKeyTab" value="true"/>
<module-option name="refreshKrb5Config" value="true"/>
<module-option name="keyTab" value="/pathtokeytab/keytab_name.keytab"/>
<module-option name="principal" value="host/principal_name@OUR.DOMAIN.COM"/>
<module-option name="doNotPrompt" value="true"/>
<module-option name="require" value="valid-user"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="SPNEGO" cache-type="default">
<authentication>
<login-module code="SPNEGO" flag="requisite">
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="serverSecurityDomain" value="host"/>
</login-module>
<login-module code="org.jboss.security.negotiation.AdvancedLdapLoginModule" flag="requisite">
<module-option name="java.naming.provider.url" value="ldap://globalcatalog.ad.mlp.com:3268/"/>
<module-option name="bindDN" value="ldap_user"/>
<module-option name="bindCredential" value="ldap_password"/>
<module-option name="baseCtxDN" value="DC=AD,DC=OURDOMAIN,DC=com"/>
<module-option name="baseFilter" value="(userPrincipalName={0})"/>
<module-option name="rolesCtxDN" value="DC=AD,DC=OURDOMAIN,DC=com"/>
<module-option name="roleFilter" value="(member={1})"/>
<module-option name="roleAttributeID" value="memberOf"/>
<module-option name="roleAttributeIsDN" value="true"/>
<module-option name="roleNameAttributeID" value="cn"/>
<module-option name="recurseRoles" value="true"/>
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="allowEmptyPassword" value="false"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="jboss-web-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required"/>
</authorization>
</security-domain>
<security-domain name="jboss-ejb-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required"/>
</authorization>
</security-domain>
</security-domains>
</subsystem>