Linuxでmod_auth_kerbを使用してKerberosとApache2を使用したいと思います。
次のようにして、プロジェクトに.htaccessを追加しました。
#SSLRequireSSL
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate On
KrbMethodK5Passwd Off
KrbAuthRealms DOMAIN.COM
Krb5KeyTab /etc/httpd/httpd.keytab
KrbLocalUserMapping On
require valid-user
IEまたはFirefoxでシングルサインオンをテストしようとすると、Apacheログに次のエラーが表示されます。
[Thu Jan 19 21:03:27 2012] [error] [client 10.65.0.1] gss_accept_sec_context() failed: An unsupported mechanism was requested (, Unknown error)
私はそれが何であるか、そしてそれを機能させるために何をすべきかわかりません。
私の目的は、REMOTE_USERにADユーザー名を入力させることです。しかし、今はこのエラーのために何もできません...
校長に問題がありました。 /etc/httpd/httpd.keytabを再作成し、HTTPプリンシパルを正しく追加しましたが、すべて正常に機能します。
このエラーの別の理由を発見しました:
WindowsはNTLMで認証を試みます。実際、それが問題の根本です。
キータブの再作成がどのように役立ったかわかりません。エラーは「キーテーブルエントリが見つかりません」の行に沿ったものになります。
Windowsは、KDCからチケットを取得できない場合、NTLMを介して認証を試みます。
私にとって、その理由は、私のサーバーが同じレルム内に配置されていなかったためです。ドメインはad.domain.com
でしたが、私のサーバーはsomething.domain.com
にありました。どういうわけかこれも許可できると確信していますが、簡単な修正は、サーバーを指すホスト名を変更することです(そして、そのドメインの新しいキータブを作成します)。
Mod_auth_gssapiとFreeIPAをkrb5サーバーとして使用し、キータブを生成する簡単なセットアップで、AuthType
コマンドの横に次を追加すると問題が解決することがわかりました。
BrowserMatch Windows gssapi-no-negotiate
Andsensからの回答に基づくと、これはNTLMを使用しようとするWindowsクライアントで実際に発生しているようです。 GssapiAllowedMech krb5
およびGssapiBasicAuthMech krb5
ネゴシエーションに成功した結果を与えないので、唯一の解決策はネゴシエーションを無効にすることであるように思われます。これが正確であることを保証することはできませんが、私にとってはうまくいきました。
対応するドキュメントは ここ