mod_authnz_ldap: AuthzSVNAccessFile で userPrincipalName と sAMAccountName を使用する

mod_authnz_ldap: AuthzSVNAccessFile で userPrincipalName と sAMAccountName を使用する

これはここでの私の最初の投稿ですので、私に優しくしてください...

弊社の Subversion サーバーへのアクセスは Apache で管理しています。現在、ユーザーは sAMAccountName でのみログインできますが、userPrincipalName (電子メール アドレス) が徐々にほとんどのログインのメイン ID になりつつあるため、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>

そこで、svnaccessfile で userPrincipalNames のみを指定できる方法を探しています。AuthLDAPRemoteUserAttribute がここで役立つことを期待していたので、 AuthLDAPRemoteUserAttribute userPrincipalNameldap-sAMAccountName に追加したところ、error.log に次のメッセージが表示されました。

auth_ldap 認証: REMOTE_USER は属性 'userPrincipalName' で設定されるはずでしたが、この属性はユーザーの LDAP クエリで要求されませんでした。REMOTE_USER は、必要に応じてユーザー名または DN にフォールバックします。

これは正しいアプローチでしょうか? これは可能なのでしょうか?

ありがとう

フロー

答え1

に触発されたhttps://svn.haxx.se/users/archive-2010-04/0011.shtmlもう一度試してみたところ、次の 2 つのフィールドに対して 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 内の電子メール アドレスの大文字と小文字もまったく同じにする必要があります。

ユーザーが入力した名前 (REMOTE_USER) ではなく、userPrincipalName のみを使用するには、他の AutnProviderAlias に対して AuthLDAPRemoteUserAttribute も指定する必要がありました。

<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 accessfile の変更は、Apache を再起動したり、ブラウザ ログインを削除したりしなくても表示されます。

関連情報