Apacheを使用してLinuxコンピューターで実行しているWebサイトがあります。 Windows ActiveDirectoryサーバーに対するシングルサインオンKerberos認証にmod_auth_kerbを採用しました。
Kerberosを正しく機能させるために、ActiveDirectoryにdummy
というサービスアカウントを作成しました。
次のコマンドを使用して、WindowsADサーバーでktpass.exeを使用してLinuxWebサーバーのキータブを生成しました。
_ktpass /out C:\krb5.keytab /princ HTTP/[email protected] /mapuser [email protected] /crypto RC4-HMAC-NT /ptype KRB5_NT_PRINCIPAL /pass xxxxxxxxx
_
次のコマンドを使用して、LinuxWebサーバーからチケットを正常に取得できます。
_kinit -k -t /path/to/keytab HTTP/[email protected]
_
...そしてklist
でチケットを表示します。
また、次のKerberosプロパティを使用してWebサーバーを構成しました。
_<Directory />
AuthType Kerberos
AuthName "Example.com Kerberos domain"
KrbMethodK5Passwd Off
KrbAuthRealms EXAMPLE.COM
KrbServiceName HTTP/[email protected]
Krb5KeyTab /path/to/keytab
Require valid-user
SSLRequireSSL
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
_
ただし、(ユーザー名が「Jeff」の別のデスクトップから)Webサイトにログインしようとすると、Kerberos資格情報がWebサーバーによって自動的に受け入れられません。その直後にアクセスを許可するはずですが、そうではありません。 mod_auth_kerbログから取得する情報は次のとおりです。
kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
ただし、mod_auth_kerb設定_KrbMethodK5Passwd
_をOn
に変更すると、より多くの情報が明らかになります。
_[Fri Oct 18 17:26:44 2013] [debug] src/mod_auth_kerb.c(1939): [client xxx.xxx.xxx.xxx] kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
[Fri Oct 18 17:26:44 2013] [debug] src/mod_auth_kerb.c(1031): [client xxx.xxx.xxx.xxx] Using HTTP/[email protected] as server principal for password verification
[Fri Oct 18 17:26:44 2013] [debug] src/mod_auth_kerb.c(735): [client xxx.xxx.xxx.xxx] Trying to get TGT for user [email protected]
[Fri Oct 18 17:26:44 2013] [debug] src/mod_auth_kerb.c(645): [client xxx.xxx.xxx.xxx] Trying to verify authenticity of KDC using principal HTTP/[email protected]
[Fri Oct 18 17:26:44 2013] [debug] src/mod_auth_kerb.c(1110): [client xxx.xxx.xxx.xxx] kerb_authenticate_user_krb5pwd ret=0 [email protected] authtype=Basic
_
何が足りないのですか?私は多くのオンラインチュートリアルを研究しましたが、Kerberos資格情報がアクセスを許可していない理由を見つけることができません。
さらに多くのログ情報を調べた後、クライアントマシンがサーバーのチケットに適切に応答していないことがわかりました。クライアントマシンで問題が発生していることを確認する方法は、Apacheサーバーのエラーメッセージ「krb5資格情報の検証に失敗しました:Kerberosデータベースにサーバーが見つかりません "」が表示されることです。の中に /etc/krb5.conf
クライアントマシン上のファイルでは、Webドメイン名が適切なKerberosレルムにマップされていることを確認する必要があります。
[domain_realm]
example.com = REALM.EXAMPLE.COM
.example.com = REALM.EXAMPLE.COM
これがないと、クライアントはサーバーを拒否します。これは、Kerberosチケットは明示的に許可されたレルムからのみ取得できるであるためです。
この情報が他の人の役に立つことを願っています!