web-dev-qa-db-ja.com

KerberosとWebサイトのシングルサインオン

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資格情報がアクセスを許可していない理由を見つけることができません。

2

さらに多くのログ情報を調べた後、クライアントマシンがサーバーのチケットに適切に応答していないことがわかりました。クライアントマシンで問題が発生していることを確認する方法は、Apacheサーバーのエラーメッセージ「krb5資格情報の検証に失敗しました:Kerberosデータベースにサーバーが見つかりません "」が表示されることです。の中に /etc/krb5.confクライアントマシン上のファイルでは、Webドメイン名が適切なKerberosレルムにマップされていることを確認する必要があります。

[domain_realm]
    example.com = REALM.EXAMPLE.COM
    .example.com = REALM.EXAMPLE.COM

これがないと、クライアントはサーバーを拒否します。これは、Kerberosチケットは明示的に許可されたレルムからのみ取得できるであるためです。

この情報が他の人の役に立つことを願っています!

3