AuthLDAPURLに複数のsearchfilterを含めることはできますか?
Uidフィルターの例:
<Location /test/>
AuthType Basic
AuthName "Test"
AuthBasicProvider ldap
AuthUserFile /dev/null
AuthLDAPURL ldap://example.test.com/o=test,c=com?uid
AuthLDAPBindDN "******"
AuthLDAPBindPassword ******
require ldap-group cn=group01,o=test,c=com
</Location>
Uidまたはmailを検索する必要があります。お気に入り...
AuthLDAPURL ldap://example.test.com/o=test,c=com?uid|mail
ソリューション(それは私のために働きます):
Apache 2.4でテスト http://httpd.Apache.org/docs/current/mod/mod_authn_core.html
<AuthnProviderAlias ldap ldap-uid>
AuthLDAPBindDN "******"
AuthLDAPBindPassword ******
AuthLDAPURL "ldap://example.test.com/o=test,c=com?uid??(&(isMemberOf=cn=group01,o=test,c=com))"
</AuthnProviderAlias>
<AuthnProviderAlias ldap ldap-mail>
AuthLDAPBindDN "******"
AuthLDAPBindPassword ******
AuthLDAPURL "ldap://example.test.com/o=test,c=com?mail??(&(isMemberOf=cn=group01,o=test,c=com))"
</AuthnProviderAlias>
<Location "/test/">
Order deny,allow
Allow from all
AuthType Basic
AuthName "Login with mail or uid"
AuthBasicProvider ldap-uid ldap-mail
LDAPReferrals Off
Require valid-user
</Location>
Thx Tonin!
私はあなたが属性uid
またはmail
を探すことを意味していると思います(それらをフィルタリングしません)。 RFC 2255 では許可されていますが、LDAP URLで2つの異なる属性を使用することは、すぐにはできません。
Apache mod_authnz_ldap documentation は、URLが次のようでなければならないことを示しています:ldap://Host:port/basedn?attribute?scope?filter
with
ただし、別のApacheモジュール、つまり mod_authn_alias を追加すると、2つの異なるLDAPURLを異なる認証プロバイダーとして使用できます。これを機能させるには、次の内容を含む新しいファイル(Apache構成のルートに含まれます)を追加できます。
# Different LDAP attributes to be used as login
<AuthnProviderAlias ldap ldap-uid>
AuthLDAPURL ldap://example.test.com/o=test,c=com?uid
AuthLDAPBindDN "******"
AuthLDAPBindPassword ******
</AuthnProviderAlias>
<AuthnProviderAlias ldap ldap-mail>
AuthLDAPURL ldap://example.test.com/o=test,c=com?mail
AuthLDAPBindDN "******"
AuthLDAPBindPassword ******
</AuthnProviderAlias>
次に、<Location>
ステートメントで、次の構成を使用します。
<Location /test/>
AuthType Basic
AuthName "Test"
AuthBasicProvider ldap-uid ldap-mail
AuthUserFile /dev/null
require ldap-group cn=group01,o=test,c=com
</Location>
これは最初にuid
を使用して認証を試行し、失敗した場合はmail
属性を使用して試行します。このタイプの構成では、必要な数の異なるLDAPURLプロバイダーを追加できます。
ただし、LDAP検索では単一の値を返す必要がある必要があります。それ以外の場合は、複数のエントリのどれがどれになるかがわかりません。パスワードの確認に使用できます。これを実現するには、スコープ(one
の代わりにsub
)または返されるエントリの数を制限する検索フィルターを使用できます。
追加ファイルは、<Location>
または<VirtualHost>
ディレクティブの外側のApache構成に追加する必要があります。これは、Apache構成のルートレベルに含める必要があります。もちろん、authn_alias
モジュールをアクティブにする必要があります。