期限切れのアカウントを持つ複数のLDAPサーバーに対するApache HTTPdの認証


8

Apache 2.2.9(Debian 5.0、2.2.9-10 + lenny7に同梱)でmod_authnz_ldapおよびmod_authn_aliasを使用して、Subversionリポジトリをホストするための複数のActive Directoryドメインに対して認証を行っています。現在の構成は次のとおりです。

# Turn up logging
LogLevel debug

# Define authentication providers
<AuthnProviderAlias ldap alpha>
  AuthLDAPBindDN "CN=Subversion,OU=Service Accounts,O=Alpha"
  AuthLDAPBindPassword [[REDACTED]]
  AuthLDAPURL ldap://dc01.alpha:3268/?sAMAccountName?sub?
</AuthnProviderAlias>

<AuthnProviderAlias ldap beta>
  AuthLDAPBindDN "CN=LDAPAuth,OU=Service Accounts,O=Beta"
  AuthLDAPBindPassword [[REDACTED]]
  AuthLDAPURL ldap://ldap.beta:3268/?sAMAccountName?sub?
</AuthnProviderAlias>

# Subversion Repository
<Location /svn>
  DAV svn
  SVNPath /opt/svn/repo
  AuthName "Subversion"
  AuthType Basic
  AuthBasicProvider alpha beta
  AuthzLDAPAuthoritative off
  AuthzSVNAccessFile /opt/svn/authz
  require valid-user
</Location>

アルファ版とベータ版の両方のアカウントを持つユーザーで問題が発生しています。特に、アルファ版のアカウントの有効期限が切れている場合(まだ存在します。企業のポリシーでは、アカウントは最低1年間有効です)。たとえば、ユーザーx(Alphaでは有効期限が切れたアカウント、Betaでは有効なアカウント)の場合、Apacheエラーログは次のように報告します。

[Tue May 11 13:42:07 2010] [debug] mod_authnz_ldap.c(377): [client 10.1.1.104] [14817] auth_ldap authenticate: using URL ldap://dc01.alpha:3268/?sAMAccountName?sub?
[Tue May 11 13:42:08 2010] [warn] [client 10.1.1.104] [14817] auth_ldap authenticate: user x authentication failed; URI /svn/ [ldap_simple_bind_s() to check user credentials failed][Invalid credentials]
[Tue May 11 13:42:08 2010] [error] [client 10.1.1.104] user x: authentication failure for "/svn/": Password Mismatch
[Tue May 11 13:42:08 2010] [debug] mod_deflate.c(615): [client 10.1.1.104] Zlib: Compressed 527 to 359 : URL /svn/

存在しないユーザー(nobodycool)として認証しようとすると、両方のLDAPサーバーを照会する正しい動作になります。

[Tue May 11 13:42:40 2010] [debug] mod_authnz_ldap.c(377): [client 10.1.1.104] [14815] auth_ldap authenticate: using URL ldap://dc01.alpha:3268/?sAMAccountName?sub?
[Tue May 11 13:42:40 2010] [warn] [client 10.1.1.104] [14815] auth_ldap authenticate: user nobodycool authentication failed; URI /svn/ [User not found][No such object]
[Tue May 11 13:42:40 2010] [debug] mod_authnz_ldap.c(377): [client 10.1.1.104] [14815] auth_ldap authenticate: using URL ldap://ldap.beta:3268/?sAMAccountName?sub?
[Tue May 11 13:42:44 2010] [warn] [client 10.1.1.104] [14815] auth_ldap authenticate: user nobodycool authentication failed; URI /svn/ [User not found][No such object]
[Tue May 11 13:42:44 2010] [error] [client 10.1.1.104] user nobodycool not found: /svn/
[Tue May 11 13:42:44 2010] [debug] mod_deflate.c(615): [client 10.1.1.104] Zlib: Compressed 527 to 359 : URL /svn/

Alphaで期限切れのアカウントを見つけた場合、Apacheを設定してBetaを正しくクエリするにはどうすればよいですか?

回答:


4

AuthzLDAPAuthoritative offディレクティブは、ユーザがクエリでDNに一致させることができない場合にのみ、次のモジュールに至るまでの認証秋できるようになります。現在、ユーザーの有効期限が切れている場合でも、LDAPクエリを実行すると、結果としてアカウントが返されるようです。

ここで明確な答えを出すにはActiveDirectory LDAPスキーマについて十分に知りませんが、AuthLDAPURL期限切れのアカウントをフィルターで除外するフィルターをディレクティブに追加できれば、ユーザー名がクエリ内のどのDNとも一致しなくなります。これにより、認証が次のモジュールに移ります。


1
フィルターの追加は機能しました。IT部門は、AlphaからBetaに移行したユーザーの説明フィールドに一貫した文字列を配置できるほど親切でした(これが、アカウントの有効期限が切れた理由です)。次のURLは正しく機能します。AuthLDAPURLldap://dc01.alpha:3268 /?sAMAccountName?sub?(&(objectClass = user)(!(description = * moved-to-Beta *)))
Brian Bassett
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.