(Debian スクイーズ)
AD ユーザーがログインできるように Kerberos 認証を使用するように Apache を設定しようとしています。動作はしていますが、ユーザー名とパスワードの入力をユーザーに 2 回要求し、最初のプロンプトは無視されます (何を入力しても無視されます)。2 回目のプロンプトにのみ、構成からの AuthName 文字列が含まれます (つまり、最初のウィンドウは一般的なユーザー名/パスワードで、2 番目にはタイトル「Kerberos ログイン」が含まれます)。この段階では統合 Windows 認証が機能するかどうかは心配していません。ユーザーが AD アカウントでログインできるようにしたいだけなので、ユーザー アカウントの 2 番目のリポジトリを設定する必要はありません。
最初の無駄なプロンプトを削除するには、どうすれば修正できますか?
apache2.conf ファイル内のディレクティブ:
<Directory /var/www/kerberos>
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate On
KrbMethodK5Passwd On
KrbAuthRealms ONEVUE.COM.AU.LOCAL
Krb5KeyTab /etc/krb5.keytab
KrbServiceName HTTP/[email protected]
require valid-user
</Directory>
krb5.conf:
[libdefaults]
default_realm = ONEVUE.COM.AU.LOCAL
[realms]
ONEVUE.COM.AU.LOCAL = {
kdc = SYD01PWDC01.ONEVUE.COM.AU.LOCAL
master_kdc = SYD01PWDC01.ONEVUE.COM.AU.LOCAL
admin_server = SYD01PWDC01.ONEVUE.COM.AU.LOCAL
default_domain = ONEVUE.COM.AU.LOCAL
}
[login]
krb4_convert = true
krb4_get_tickets = false
保護されたディレクトリにアクセスしたときのアクセス ログ (2 つの別々の 401 に注意してください)
192.168.10.115 - - [24/Aug/2012:15:52:01 +1000] "GET /kerberos/ HTTP/1.1" 401 710 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
192.168.10.115 - - [24/Aug/2012:15:52:06 +1000] "GET /kerberos/ HTTP/1.1" 401 680 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
192.168.10.115 - [email protected] [24/Aug/2012:15:52:10 +1000] "GET /kerberos/ HTTP/1.1" 200 375 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1"
そしてerror.logに1行
[Fri Aug 24 15:52:06 2012] [error] [client 192.168.0.115] gss_accept_sec_context(2) failed: An unsupported mechanism was requested (, Unknown error)
答え1
まだ回答が必要かどうかはわかりませんが、私の経験を共有することで他の誰かの役に立てれば幸いです。これらの手順に従えば、すべてうまくいくと思います。
- 適切なDNSエントリがあることを確認してくださいSYD01TBUG02(Aレコード) DNSサーバー上のWebサーバーを指す
- Web サービスの SPN と AD ユーザーの間に関連付けがあることを確認してください。AD サーバーで次のコマンドを実行します。
setspn -A HTTP/SYD01TBUG02.onevue.com.au.local ad_username
- 適切なキータブが生成されていることを確認してください。AD サーバーで次のコマンドを実行します。
ここでxxxxxxはADユーザーのパスワードです。-暗号すべてサポートされているすべてのハッシュをキータブ ファイルに追加することを確認するオプション。ktpass -princ HTTP/[email protected] -mapuser ad_username -pass xxxxxx -crypto ALL -ptype KRB5_NT_PRINCIPAL -out SYD01TBUG02.keytab -setupn -setpass
- 生成されたものをコピーしますSYD01TBUG02.キータブファイルをウェブサーバーにコピーし、特定のディレクトリにコピーします。たとえば、/etc/apache2/キータブ/フォルダ。
- Web サービスの Apache 設定ファイルの例:
<VirtualHost *:80> DocumentRoot "/var/www/kerberos" ServerName SYD01TBUG02.onevue.com.au.local ServerAlias SYD01TBUG02 AddDefaultCharset UTF-8 DirectoryIndex index.php ErrorLog /var/log/apache2/error_SYD01TBUG02.log TransferLog /var/log/apache2/transfer_SYD01TBUG02.log LogLevel warn ServerAdmin [email protected] <Location "/"> AuthType Kerberos KrbAuthRealms ONEVUE.COM.AU.LOCAL KrbServiceName HTTP/[email protected] Krb5Keytab /etc/apache2/keytab/SYD01TBUG02.keytab KrbMethodNegotiate on KrbMethodK5Passwd on KrbVerifyKDC on require valid-user </Location> <Directory /> </Directory> </VirtualHost>
Apacheをリロードまたは再起動する - ブラウザのアドレスバーにhttp://SYD01TBUG02/と入力すると、SSO経由でWebサービスに自動的にログインします(Chrome、Chromiumのようなブラウザ、IEはSSOを標準でサポートしていますが、Firefox用プラグイン)。
sudo service apache2 reload
これが Web サーバー上で Kerberos 認証を設定するのに役立つことを願っています。
追伸完全なアドレスでSSOを有効にする場合(例:SYD01TBUG02.onevue.com.au.ローカル)を追加する必要がありますSYD01TBUG02.onevue.com.au.ローカルAD グループ ポリシー (ドメイン内の複数のマシンで必要な場合) またはローカルの Internet Explorer 設定を介してイントラネット ゾーンに追加します。これらの設定は、システムにインストールされているすべてのブラウザーに影響します。
答え2
これは、ユーザーが最初に u/p を入力するときに、ntlm トークンがサーバーに送信されるからです。2 回目は正しい Kerberos トークンです。
残念ながら、最初のプロンプトを削除する方法はありません。
答え3
シングル サインオンが必須でない場合は、「KrbMethodNegotiate off」を設定してネゴシエートを無効にすることができます。これにより、基本的なログインが 1 回だけになり、トランザクションごとに追加の GET 要求が回避されます。