私がやろうとしていること:
当社のイントラネット上にホームページを作成し、ページの読み込み時にこれらの資格情報の入力を求められることなく、ページを表示しているユーザーのログイン Windows ユーザー名を自動的に取得します。
IT担当者がドメインをセットアップするまでにはしばらく時間がかかるため、現在、ローカルのユーザー名を取得したいだけです。たとえば、現在、プロンプトなしで「(PC-Name)\windows.user.name」をキャプチャする必要があります。
環境:
Windows 7 x64 上の Apache 2.2.21 (本番環境になると、CentOS に搭載されます)。
PHP 5.3.8 (VC9-ZTS)。
Internet Explorer 9.0.8x と Firefox 6.0.2 (Chrome については後で考えます)。
現在のテスト ページは、print_r( $_SERVER ) を呼び出す PHP スクリプトです。
簡単にするために、これをテストしているディレクトリは VirtualHost ではありません。
これまでに行った手順:
SourceForge から mod_sspi_1.0.4-2.2.2 をダウンロードし、mod_auth_sspi.so を Apache モジュール ディレクトリに展開します。
モジュール宣言を追加しました:
LoadModule sspi_auth_module modules/mod_auth_sspi.so
ディレクトリ定義を追加しました:
AllowOverride なし オプション なし 順序を許可、拒否 すべてから許可
AuthName "My Intranet" AuthType SSPI SSPIAuth On SSPIAuthoritative Off require valid-user
about:config に移動し、network.automatic-ntlm-auth.trusted-uris を PHP スクリプトの絶対 URL パスに設定して、Firefox で統合認証を有効にし、Firefox を再起動しました。
私はまだ IE で同等の手順を実行していませんが、内部でサポートされている主なブラウザーである Firefox が動作するようになるとします。
Apache を再起動し、テスト PHP スクリプトのロードを試みました。
結果:
- IE と Firefox の両方で、ページが読み込まれる前にユーザー名とパスワードの入力を求められます。そのプロンプトは必要ありません。プロンプトなしでユーザー名を自動的に検出したい。
これまでのトラブルシューティング:
権限のあるオン/オフなど、さまざまなSSPIオプションを循環させてみました。無効。
「require valid-user」を削除するとプロンプトは表示されなくなりますが、ユーザー名も渡されません (NULL ではなく、単に配列ピリオドに設定されていません)。
プロンプトで [キャンセル] をクリックすると、標準の [認証が必要です] ページが表示されます。
無効なユーザー名を入力した場合、または正しいユーザー名を入力してもパスワードが間違っている場合、ページは読み込まれますが、ユーザー名は "(PC-Name)\Guest" になります。
正しいユーザー名/パスワードを入力すると、Guest の代わりにユーザー名が表示されます。
IE または Firefox でユーザー名/パスワードを入力すると、保存されたパスワードのキャッシュをクリアするか、ブラウザーを再起動するまで、ブラウザーは後続のページのユーザー名を記憶します。
私は過去3時間ほどグーグルとランダムな推測に費やしました. 成功ゼロ。この質問をしている人々の孤立したフォーラム投稿をいくつか見つけましたが、彼らは答えられなかったか、私がすでに試した解決策を提供しましたが成功しませんでした.
繰り返しますが、プロンプトを表示せずにページを読み込み、現在ログオンしている Windows ユーザー名を $_SERVER 配列の出力に表示する必要があります。
私が推測できる限り、これは次のいずれかです。Windows の構成の問題、Apache の構成の問題、またはブラウザーの構成の問題です。それ以外は、私はアイデアがありません。
あなたが提供できるどんな助けにもとても感謝しています。ありがとう!
――クリス