mod_authnz_ldap - AuthLDAPInitialBindAsUserを使用してあいまいな「内部エラー」が発生する

mod_authnz_ldap - AuthLDAPInitialBindAsUserを使用してあいまいな「内部エラー」が発生する

RHEL 7.4、Apache/2.4.6 で mod_authnz_ldap.so および AuthLDAPInitialBindAsUser を使用して構成されました。

構成は、ユーザーログインをバインドしてLDAP認証を実行することです。

「認証が必要」ポップアップでユーザー名/パスワードの入力を求められます。

  • ユーザーと誰でも両方のフィールドを空にしてください。またはユーザー名を入力し、パスワードフィールドを空白のままにして[OK]をクリックします。彼は「サーバーに内部エラーまたは構成エラーが発生したため、要求を完了できません。– /var/log/httpd/error_log にエラーがありません。
  • ユーザーが間違ったユーザー名および/または間違ったパスワードを入力すると、システムは正常に応答し、ポップアップを再表示します。
  • ユーザーが正しいユーザー名とパスワードを入力すると、システムは正常に応答し、必要なWebページを表示します。

このエラーページが表示されないようにするにはどうすればよいですか?

kibana.conf:

<VirtualHost *:80>
    ServerName kibana.mydomain.com
    ProxyPass / http://127.0.0.1:5601/
    ProxyPassReverse / http://127.0.0.1:5601/

    <Location "/app/kibana">
        AuthType basic
        AuthName "LDAP Login"
        AuthBasicProvider ldap
        AuthLDAPURL "ldap://ldap.mydomain/dc=example,dc=com?sAMAccountName?sub?(objectClass=*)"
        AuthLDAPInitialBindAsUser on
        AuthLDAPInitialBindPattern (.*) "CN=$1,ou=users,dc=example,dc=com"
        Require valid-user
    </Location>

</VirtualHost>

/var/log/httpd/error_logに設定しましたが、LDAPLibraryDebug 7次のエラーメッセージが表示されます。

res_errno: 1, res_error: <000004DC: LdapErr: DSID-0C09075A, 説明:これを行うには、接続でバインディングが正常に完了する必要があります。、データ0、v1db1>、res_matched:<> ldap_free_request(origid 2、msgid 2)ldap_parse_result ldap_err2string [Thu Nov 29, 2018 20:36:09.068006] [authnz_ld2 5:56 915: auth_ldap 確認: ユーザーの確認に失敗しました。 URI /home/debug.jsp [ldap_search_ext_s()ユーザー向け失敗][操作エラー] <---- *これを行うと確認に失敗しましたいいえ操作エラー処理できませんhttplandlerそして結局はなったインターネットサーバーエラー*

情報」これを行うには、接続でバインディングが正常に完了する必要があります。「バインディングが不完全であっても、モジュールが他の作業を実行しようとしていると信じています。ただし、実際にはパスワードが無効な場合やユーザー名が指定されていない場合と同じように反応する必要があります。

ユーザー名を渡しましたが、パスワードフィールドを空白のままにすると、エラーメッセージが表示されます。

[Thu Nov 29 20:48:48.818805 2018] [authnz_ldap:info] [pid 25550] [client 72.23.42.165:57045] AH01695: auth_ldap認証:ユーザーthe.userの認証に失敗しました。 URI /home/debug.jsp [ LDAP : ldap_simple_bind() 失敗] [無効な資格情報] [Thu Nov 29 2018 20:48:48.818833] [auth_basic:error] [pid 25550] [Client 72.45:57ユーザーユーザー:確認に失敗しました"/home/debug.jsp"の場合:パスワードが一致しません

ユーザー名を入力していないがパスワードフィールドに値がある場合、エラーメッセージ

[Thu Nov 29 20:49:18.720210] [authnz_ldap:info] [pid 25549] [client 72.23.42.165:57050] AH01695: auth_ldap認証:ユーザー認証に失敗しました。 URI /home/debug.jsp [ LDAP: ldap_simple_bind() 失敗 ] [無効な資格情報] [Thu Nov 29 2018 20:49:18.720222] [auth_basic:error] [pid 25549] [クライアント 72.5:50ユーザー:確認に失敗しました"/home/debug.jsp"の場合:パスワードが一致しません

ユーザー名/パスワードが正しい場合は、メッセージを表示

[Thu Nov 29 20:53:29.658294] [authnz_ldap:debug] [pid 25551] mod_authnz_ldap.c(593): [client 72.23.42.165:57105] AH01697: auth_ld 53: 29.658328 2018] [authz_core:debug] [pid 25551] mod_authz_core.c(809): [client 72.23.42.165:57105] AH01626: 承認結果に有効なユーザー 1 日 2 :53:29.658338 ] [authz_core:debug] [pid 25551] mod_authz_core.c(809): [client 72.23.42.165:57105] AH01626: 認証結果: 承認済み [Thu Nov 29 29 20 debug] [pid 25551] mod_proxy.c(1123): [client 72.23.42.165:57105] AH01143: 実行方式 http ハンドラ(0回試み)

答え1

同じ問題に関する別の記事があります。そこで提案された解決策(この問題が発生したときに私にはうまくいきました)は、このオプションをLDAP設定に追加することです。

AuthLDAPBindAuthoritative off

Apacheドキュメントから:

デフォルトでは、後続の認証プロバイダはユーザーをDNにマップできない場合にのみ照会されますが、ユーザーがDNにマップされてLDAPバインドを使用してパスワードを解決できない場合は照会されません。 AuthLDAPBindAuthoritativeがoffに設定されている場合、何らかの理由でLDAPバインド(現在のユーザーの資格情報を使用)が失敗した場合は、構成されている他の認証モジュールでユーザーを認証できます。

したがって、このオプションを設定すると、offApacheはエラーが存在しない次の認証プロバイダを照会しようとするものに変換するようです。この操作が失敗すると、500 の代わりに予想される 401 エラーページが表示されます。

答え2

私はエラーがないと思います。特定の問題のエラーページがデフォルト値に設定されているだけです。パスワードエラーページを自分が指定したページに設定する方法を見つけることをお勧めします。

詳しくはLDAPLIbraryDebugを有効にしてください。

追加情報:Apacheモジュール:mod_authnz_ldap

ビデオと設定:LDAPのYouTube動画

関連情報