mod_authnz_ldap: Verwenden von userPrincipalName und sAMAccountName mit AuthzSVNAccessFile

mod_authnz_ldap: Verwenden von userPrincipalName und sAMAccountName mit AuthzSVNAccessFile

dies ist mein erster Beitrag hier, also seien Sie bitte nett zu mir …

Wir haben Apache, das den Zugriff auf unseren Subversion-Server verwaltet. Derzeit können sich Benutzer nur mit ihrem sAMAccountName anmelden, aber da userPrincipalName (E-Mail-Adresse) nach und nach zur Haupt-ID für die meisten Anmeldungen wird, möchten wir dies unterstützen und die Unterstützung für sAMAccountName beibehalten.

Der aktuelle Ansatz, der wie folgt aussieht, hat den Nachteil, dass beide Benutzernamen - sAMAccountName und userPrincipalName - in der svnaccess-Datei angegeben werden müssen:

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

Ich suche also nach einer Möglichkeit, in der svnaccess-Datei nur userPrincipalNames angeben zu können. Ich hoffte, dass AuthLDAPRemoteUserAttribute hier helfen könnte, also habe ich AuthLDAPRemoteUserAttribute userPrincipalNameldap-sAMAccountName hinzugefügt, was zu dieser Meldung in error.log führte:

auth_ldap-Authentifizierung: REMOTE_USER sollte mit dem Attribut „userPrincipalName“ festgelegt werden, aber dieses Attribut wurde in der LDAP-Abfrage für den Benutzer nicht angefordert. REMOTE_USER wird je nach Bedarf auf den Benutzernamen oder DN zurückgreifen.

Ist das der richtige Ansatz? Ist das überhaupt möglich?

Danke

Flo

Antwort1

Inspiriert vonhttps://svn.haxx.se/users/archive-2010-04/0011.shtmlWir haben es noch einmal versucht und eine Lösung gefunden, wie man LDAP nach zwei Feldern abfragt:

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

Die letzte Zeile wandelt REMOTE_USER in den Inhalt von userPrincipalName um.

Da userPrincipalName in unserem Unternehmen E-Mail-Adressen mit einigen Großbuchstaben enthält, müssen wir in der Svnaccess-Datei genau die gleiche Groß-/Kleinschreibung der E-Mail-Adressen verwenden.

Um nur userPrincipalName und nicht die vom Benutzer eingegebene Zeichenfolge (REMOTE_USER) zu verwenden, mussten wir auch AuthLDAPRemoteUserAttribute für den anderen AutnProviderAlias ​​angeben:

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

Außerdem mussten wir die Reihenfolge der Anbieter ändern:

AuthBasicProvider ldap-userprincipalname ldap-sAMAccountName  

Randbemerkungen: error.log zeigt nur Ablehnungen aufgrund von LDAP-Ergebnissen an, fehlende Berechtigungen in svnaccessfile werden dort nicht angezeigt. Daher sind Änderungen in svn accessfile sichtbar, ohne dass Apache neu gestartet oder der Browser-Login gelöscht werden muss.

verwandte Informationen