это мой первый пост здесь, поэтому будьте добры со мной ...
У нас есть apache для управления доступом к нашему серверу Subversion. В настоящее время пользователи могут входить в систему только со своим sAMAccountName, но поскольку userPrincipalName (адрес электронной почты) постепенно становится основным идентификатором для большинства учетных записей, мы хотели бы поддержать это, а также сохранить поддержку sAMAccountName.
Текущий подход, который выглядит как Ниже приводится недостаток, заключающийся в том, что оба имени пользователя - sAMAccountName и userPrincipalName - должны быть указаны в svnaccessfile:
<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>
Поэтому я ищу способ указать только userPrincipalNames в svnaccessfile. Я надеялся, что AuthLDAPRemoteUserAttribute может помочь здесь, поэтому добавил
AuthLDAPRemoteUserAttribute userPrincipalName
к ldap-sAMAccountName, что приводит к этому сообщению в error.log:
auth_ldap Authenticate: REMOTE_USER должен быть установлен с атрибутом 'userPrincipalName', но этот атрибут не запрашивался в Запрос LDAP для пользователя. REMOTE_USER вернется к имени пользователя или DN
Правильный ли это подход? Возможно ли это вообще?
Спасибо
Flo
Вдохновленный https://svn.haxx.se/users/archive-2010-04/0011.shtml , мы попробовали еще раз и нашли решение, как запросить ldap для два поля:
<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>
Последняя строка превращает REMOTE_USER в содержимое userPrincipalName.
Поскольку userPrincipalName в нашей компании содержит адреса электронной почты с некоторыми заглавными буквами, мы должны использовать точно такой же регистр адресов электронной почты в svnaccessfile.
Чтобы использовать только userPrincipalName, а не то, что пользователь ввел (REMOTE_USER), нам также пришлось указать AuthLDAPRemoteUserAttribute для других 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>
Нам также пришлось изменить порядок поставщиков:
AuthBasicProvider ldap-userprincipalname ldap-sAMAccountName
Сторонние уведомления: только error.log показывает отклонения из-за результатов ldap, отсутствующие разрешения в svnaccessfile не отображаются. Поэтому изменения в файле доступа svn видны без перезапуска apache или удаления логина браузера.