そのページで現在のユーザーのIPとホスト名を抽出できるPHP Webアプリケーションをイントラネット上に持っていますが、Active Directory/Windowsユーザー名も取得/抽出する方法があるかどうか疑問に思っていました. これは可能ですか?
16 に答える
AUTH_USER
リクエスト変数を確認してください。Web アプリで匿名アクセスが許可されている場合、これは空になりますが、サーバーが基本認証または Windows 統合認証を使用している場合は、認証されたユーザーのユーザー名が含まれます。
Active Directory ドメインでは、クライアントが Internet Explorer を実行していて、Web サーバー/ファイル システムのアクセス許可が適切に構成されている場合、IE はサイレントにドメイン資格情報をサーバーに送信し、ユーザーが Web アプリに明示的にログインする必要AUTH_USER
はありません。MYDOMAIN\user.name
IISでphp mysqlを実行しています-IISでWindows認証をオンにすると使用でき$_SERVER["AUTH_USER"]
ます->認証と匿名認証をオフにします(重要)
これを使用して、ユーザーとドメインを取得しました。
$user = $_SERVER['AUTH_USER'];
$user
は次のような値を返します:DOMAIN\username
私たちのネットワークではDOMAIN\
、文字列から を削除しただけです。
これは、IE、FF、Chrome、Safari (テスト済み) で動作します。
PHP LDAP ライブラリ関数を見てください: http://us.php.net/ldap。
Active Directory は [ほとんど] LDAP 標準に準拠しています。
Windows で Apache を使用している場合は、mod_auth_sspi を以下からインストールできます。
https://sourceforge.net/projects/mod-auth-sspi/
手順は INSTALL ファイルにあり、whoami.php の例があります。(mod_auth_sspi.so ファイルをフォルダーにコピーし、httpd.conf に行を追加するだけの場合です。)
インストールが完了し、希望するディレクトリを保護するために必要な設定が httpd.conf で行われると、PHP は$_SERVER['REMOTE_USER']
IE で認証されたユーザーのユーザーとドメイン ('USER\DOMAIN') を入力します。または、Firefox でプロンプトを出して認証します。渡す前に。
Infoはセッションベースなので、Firefoxでもシングル(っぽい)サインオンが可能...
-クレイグ
リモート ユーザーの IDSID/ユーザー名を取得する場合は、次を使用します。
echo gethostbyaddr($_SERVER['REMOTE_ADDR']);
iamuser1-mys.corp.company.com のようなものが得られます
背後にある残りのドメインをフィルタリングすると、idsid のみを取得できます。
詳細については、http://lostwithin.net/how-to-get-users-ip-and-computer-name-using-php/をご覧ください。
一部のファイルへの認証済みアクセスを要求することで、おそらくmod_auth_kerbを使用して Apacheでユーザーを認証する ことができます...そのようにすると、ユーザー名はどこかの PHP 環境変数でも利用できるはずです...おそらく、実行したら確認するのが最善です.<?php phpinfo(); ?>
あなたは言うことができますgetenv('USERNAME')
Apacheのパッチが適用されたNTLM認証モジュールを確認して くださいhttps://github.com/rsim/mod_ntlm
Apache/Unix用のNTLM認証モジュールに基づく http://modntlm.sourceforge.net/
詳細については、http://blog.rayapps.com/をご覧ください。
ソース: http: //imthi.com/blog/programming/leopard-apache2-ntlm-php-integrated-windows-authentication.php
get_user_name は getenv('USERNAME'); と同じように機能します。
getenv('USERNAME') を使用してエンコーディング (キリル文字) の問題が発生しました
いいえ。ただし、できることは、Active Directory 管理者に LDAP を有効にしてもらい、ユーザーが 1 つの資格情報セットを維持できるようにすることです。
このコードを試してください:
$user= shell_exec("echo %username%");
echo "user : $user";
Windows(AD)のユーザー名をphpで取得します