お世話になっております。 諸先輩方のお知恵をお借りしたく、投稿させていただきます。 長文となりますが、よろしくお願いいたします。 ネットから情報収集し、自分なりに試行錯誤しながら色々とやってみてはいるものの、 思い通りの動作にならず困っております。 【やりたいこと】 Sambaを利用してLinuxサーバ(Apache)をActive Directoryに参加させ、 Windows統合認証(NTLM認証:mod_auth_ntlm_winbind)を利用して Windowsクライアントからシングルサインオンさせたい。 【環境】 ・DC(Active Directory) OS:Windows Server 2003 Enterprise Edition SP2 コンピュータ名:adserver ドメイン:hoge.local ユーザー:ドメイン「hoge.local」の直下に、ユーザー「hogeuser」が存在する。 IPアドレス:xxx.xxx.xxx.xxx ・Linuxサーバ OS:Asianux Server3 SP3 Sambaバージョン:3.0.33 Apacheバージョン:2.2.3 コンピューター名:adclient ⇒ADの「Computers」の中に表示されているので、ドメインに参加できていると思われます。 IPアドレス:yyy.yyy.yyy.yyy ・クライアントマシンその1("C1"と略します。) OS:Windows 7 Professional ブラウザ:IE8 ドメイン参加:hoge.local(←今回の検証のために作成したドメイン)に参加済み。 ⇒コマンドプロンプトで「whoami /fqdn」と打つと「CN=hogeuser,DC=hoge,DC=local」が 返ってきます。 コンピューター名:test-pc ⇒ADの「Computers」の中に表示されているので、ドメインに参加できていると思われます。 ・クライアントマシンその2("C2"と略します。) OS:Windows XP SP3 ブラウザ:IE8 ドメイン参加:xxnet.com(←社内のドメイン)に参加済み。 DC⇔C1間、及びLinuxサーバ⇔C1間の疎通は問題ありません(双方向でのPingは通っています)。 【各種設定ファイル情報】 ・/etc/samba/smb.conf ※修正を加えた部分のみ抜粋。 [global] workgroup = HOGE security = ads passdb backend = tdbsam realm = HOGE.LOCAL password server = hoge.local encrypt passwords = true idmap uid = 10000-20000 idmap gid = 10000-20000 winbind use default domain = yes winbind cache time = 0 winbind separator = + template homedir = /home/%U template shell = /bin/false ・/etc/krb5.conf ※修正を加えた部分のみ抜粋。 [libdefaults] default_realm = HOGE.LOCAL [realms] HOGE.LOCAL = { kdc = xxx.xxx.xxx.xxx admin_server = xxx.xxx.xxx.xxx default_domain = hoge.local } [domain_realm] .hoge.local = HOGE.LOCAL hoge.local = HOGE.LOCAL ・/etc/hosts 127.0.0.1 localhost.localdomain localhost ←デフォルト(初期状態)のまま変更していない ::1 localhost6.localdomain6 localhost6 ←デフォルト(初期状態)のまま変更していない yyy.yyy.yyy.yyy adclient.hoge.local adclient ←この行だけを追加 ・/etc/resolv.conf search hoge.local nameserver xxx.xxx.xxx.xxx ・/etc/nsswitch.conf ※修正を加えた部分のみ抜粋。 passwd: files winbind shadow: files winbind group: files winbind ・/etc/httpd/conf/httpd.conf ※修正を加えた部分のみ抜粋。 KeepAlive On LoadModule auth_ntlm_winbind_module modules/mod_auth_ntlm_winbind.so Alias /ntlm/ "/var/www/html/ntlm/" <Directory "/var/www/html/ntlm/"> NTLMAuth on AuthType NTLM AuthName "NTLM Authentication" NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp" NTLMBasicAuthoritative on require valid-user </Directory> ・/var/cache/samba/winbindd_privileged のアクセス権 drwxr-x--- 2 root apache 4096 8月 13 10:58 winbindd_privileged 【現状】 Linuxサーバの/var/www/html/ntlm/の下に動作確認用の簡単なWebページ(index.html)を用意し、 C1から「http://yyy.yyy.yyy.yyy/ntlm/」(※1)にアクセスを試みると、 IDとパスワードの入力を促す認証ダイアログが表示されます。 認証ダイアログが表示されずに、ダイレクトでWebページを表示させたい (つまり、ドメインに参加したユーザのIDとパスワードでシングルサインオンさせたい) のですが、上述したように認証ダイアログが表示されてしまい、うまくいきません。 ここで、ドメインに登録されているユーザのID(hoge\hogeuser)とパスワード(※2)を 入力しても、何故かはじかれてしまいます。 ちなみに、C2(←hoge.localには参加していない)で同様の手順を踏むと、 認証ダイアログが表示されますが、その認証ダイアログに※2と同一の情報を入力すると、 用意したWebページが正しく表示されます。 以降、C2から※1に何度アクセスしても認証ダイアログが表示されずにWebページが 表示されるので、正しくシングルサインオンができていると思っております。 C2で一度ログオフ、その後再びログオンして再度※1にアクセスすると、 認証ダイアログが再び表示されました。 ⇒C2からのシングルサインオンの流れは特に問題無いと理解しています。 【疑問点】 (1)C1から※1にアクセスした際、何故認証ダイアログが表示されてしまうのでしょうか? (2)C1とC2において、何故動作が違うのか。 ⇒C2でWebページが表示できるのに対し、C1が表示できない点が腑に落ちません。 DC(Active Directory)の設定が悪いのか・・・ Linuxサーバーの設定が悪いのか・・・ はたまたクライアントマシン(もしくはブラウザ)の設定が悪いのか・・・ の絞り込みもできず、泥沼にはまっております。 お手数ですが、ご助言・アドバイス等いただきたく、よろしくお願い致します。 【備考】 その他の情報として、以下コマンドの実行結果も示しておきます。 # net ads info LDAP server: xxx.xxx.xxx.xxx LDAP server name: adserver.hoge.local Realm: HOGE.LOCAL Bind Path: dc=HOGE,dc=LOCAL LDAP port: 389 Server time: 月, 13 8月 2012 13:12:24 JST KDC server: DCのIPアドレス Server time offset: 0 # net ads testjoin Join is OK # wbinfo -t checking the trust secret via RPC calls succeeded
↧