Аутентификация с именем пользователя, отличным от UPN или samAccountName - PullRequest
0 голосов
/ 02 апреля 2019

Я использую org.jboss.security.negotiation.AdvancedLdapLoginModule в wildfly, чтобы получить список групп, к которым принадлежит пользователь. Чтобы получить список, у меня есть это в конфигурации:

<module-option name="baseFilter" value="(userPrincipalName={0})"/>

Он передает логин вместо {0} для совпадения с UPN

Имя в UPN находится в FirstName.LastName@OUR.DOMAIN.COM. Имя пользователя, которое я получаю, - FirstLetterOfFirstNameLastName@OUR.DOMAIN.COM (так настраивается наша AD).

В 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>
...