PHPアプリケーションからユーザーのWindowsユーザー名を取得するにはどうすればよいですか?

私がここに投稿する理由は、これを達成するためにどのような特定の要件が満たされなければならないかはまだ分かりません。

私たちはPHPアプリケーションをiSeries Apache Webサーバー上で実行します。私たちのすべてのユーザーはIEになっています。私たちは会社ネットワーク内のユーザ名にADを使用します。

現在のApacheサーバーの設定では、ユーザーが我々のページにログインする必要はありません。ネットワークに接続している場合は、そのページにアクセスできます。

ログオンしたWindowsのユーザー名を取得する方法はありますか(LDAPまたは他の方法による)?最後の最後の手段は、ユーザーをWindowsサーバー上でホストされているASP.NETサイトにリダイレクトし、ユーザー名をPHPアプリケーションに戻すことです。しかし、これもまた最後の手段です。

ここのリンク: Windows(AD)のユーザー名をPHP?にはかなりの提案がありますが、AUTH_USER変数はリンクに記載されているとおり空であり、iSeries ApacheサーバーはWindows統合認証を実装できるとは思いません。

誰かが自分の選択肢を説明し、(可能であれば)それらの選択肢の難しさを説明することができれば、それは歓迎されるだろう。私がLDAPやサーバー設定に慣れていないので、できるだけ具体的に記述してください。

4
追加された 編集された
ビュー: 1

2 答え

IEを使用しているので、ActiveXオブジェクトとJavaScriptから取得できます。これをPHPに取り込むには、ログインページの隠しフィールドとしてそれを含めることができますか?

try {
  var activex = new ActiveXObject('WScript.Network');
  document.write(activex.userName);
} catch (ex) {
  document.write("unable to get user info");
}

このサイトをブラウザの信頼済みゾーンに追加し、有効なスクリプトを実行します。

3
追加された
これを試してみると、「オートメーションサーバーはオブジェクトを作成できません」というメッセージが表示されます。私は少しこれをグーグルしているが、サーバーを変更せずにIE8で動作する解決策を見つけることができません。
追加された 著者 adam,

PHPアプリケーションのSSO処理に関する私の経験から、mod_auth_ntlmとKerberosの組み合わせを使ってこの作業を行うことができます(このリンクは、私の覚えているものに非常に近いものですが、オリジナルの設定は5年前のGentooボックスでした。正しくリコールすれば、この設定の $ _ SERVER ["REMOTE_USER"] 変数でユーザー名を見つける必要があります。

0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

招待状へのリンク: https://t.me/joinchat/B2gdSlA_dh1-BQtEKA2dfw このグループではPHPについて話します。 パートナー:kotaeta.com