mod_authnz_ldap: uso de userPrincipalName y sAMAccountName con AuthzSVNAccessFile

mod_authnz_ldap: uso de userPrincipalName y sAMAccountName con AuthzSVNAccessFile

Esta es mi primera publicación aquí, así que sean amables conmigo...

Tenemos Apache administrando el acceso a nuestro servidor Subversion. Actualmente, los usuarios solo pueden iniciar sesión con su sAMAccountName, pero dado que userPrincipalName (dirección de correo electrónico) se está convirtiendo gradualmente en el ID principal para la mayoría de los inicios de sesión, nos gustaría admitirlo y mantener el soporte para sAMAccountName.

El enfoque actual, que tiene el siguiente aspecto, tiene la desventaja de que ambos nombres de usuario (sAMAccountName y userPrincipalName) deben especificarse en el archivo svnaccess:

<AuthnProviderAlias ldap ldap-sAMAccountName>
    AuthLDAPBindDN "CN=d-svn-ldap,OU=IT-050,OU=Service Accounts,OU=Accounts,OU=Domain Administration,DC=cds,DC=company"
    AuthLDAPBindPassword ***
    AuthLDAPUrl "ldap://server.company:3268/DC=cds,DC=company?sAMAccountName?sub?(objectclass=user)"
</AuthnProviderAlias>
<AuthnProviderAlias ldap ldap-userprincipalname>
    AuthLDAPBindDN "CN=d-svn-ldap,OU=IT-050,OU=Service Accounts,OU=Accounts,OU=Domain Administration,DC=cds,DC=company"
    AuthLDAPBindPassword ***
    AuthLDAPUrl "ldap://server.company:3268/DC=cds,DC=company?userPrincipalName?sub?(objectclass=user)"
</AuthnProviderAlias>

<Location "/our_repo">
DAV svn
SVNPath /svn/repos/our_repo
SVNListParentPath on

AuthzSVNAccessFile /etc/apache2/conf-available/authz_repository_our_repo
Options Indexes Followsymlinks

AuthBasicProvider ldap-sAMAccountName  ldap-userprincipalname

AuthType Basic
AuthName "LDAP authentication"
Require valid-user
# Note that Require ldap-* would not work here, since the
# AuthnProviderAlias does not provide the config to authorization providers
# that are implemented in the same module as the authentication provider.
</Location>

Así que estoy buscando una manera de poder especificar solo nombres principales de usuario en el archivo svnaccess. Esperaba que AuthLDAPRemoteUserAttribute pudiera ayudar aquí, así que agregué AuthLDAPRemoteUserAttribute userPrincipalNamea ldap-sAMAccountName, lo que generó este mensaje en error.log:

auth_ldap authenticate: REMOTE_USER debía configurarse con el atributo 'userPrincipalName', pero este atributo no se solicitó en la consulta LDAP para el usuario. REMOTE_USER recurrirá al nombre de usuario o DN según corresponda.

¿Es este el enfoque correcto? ¿Es esto siquiera posible?

Gracias

flo

Respuesta1

Inspirado porhttps://svn.haxx.se/users/archive-2010-04/0011.shtmlLo intentamos de nuevo y encontramos una solución sobre cómo consultar ldap para dos campos:

<AuthnProviderAlias ldap ldap-sAMAccountName>
    AuthLDAPBindDN "CN=d-svn-ldap,OU=IT-050,OU=Service Accounts,OU=Accounts,OU=Domain Administration,DC=cds,DC=company"
    AuthLDAPBindPassword ***
    AuthLDAPRemoteUserIsDN on
    AuthLDAPUrl "ldap://server.company:3268/DC=cds,DC=company?sAMAccountName,userPrincipalName?sub?(objectclass=*)"
    AuthLDAPRemoteUserAttribute userPrincipalName
</AuthnProviderAlias>

La última línea convierte REMOTE_USER en el contenido de userPrincipalName.

Dado que userPrincipalName en nuestra empresa contiene direcciones de correo electrónico con algunas letras mayúsculas, tenemos que usar exactamente las mismas mayúsculas y minúsculas para las direcciones de correo electrónico en el archivo svnaccess.

Para usar solo userPrincipalName y no lo que el usuario ingresó (REMOTE_USER), también tuvimos que especificar AuthLDAPRemoteUserAttribute para el otro AutnProviderAlias:

<AuthnProviderAlias ldap ldap-userprincipalname>
    AuthLDAPBindDN "CN=d-svn-ldap,OU=IT-050,OU=Service Accounts,OU=Accounts,OU=Domain Administration,DC=cds,DC=company"
    AuthLDAPBindPassword ***
    AuthLDAPUrl "ldap://server.company:3268/DC=cds,DC=company?userPrincipalName?sub?(objectclass=user)"
    AuthLDAPRemoteUserAttribute userPrincipalName
</AuthnProviderAlias>

También tuvimos que cambiar el orden de los proveedores:

AuthBasicProvider ldap-userprincipalname ldap-sAMAccountName  

Avisos secundarios: error.log solo muestra rechazos debido a resultados de ldap, los permisos faltantes en svnaccessfile no aparecen allí. Por lo tanto, los cambios en el archivo de acceso svn son visibles sin reiniciar Apache ni eliminar el inicio de sesión del navegador.

información relacionada