そのページで現在のユーザーのIPとホスト名を抽出できるイントラネット上のPHP Webアプリケーションがありますが、Active Directoryを取得/抽出する方法があるかどうか疑問に思っていました/ Windowsユーザー名もこれは可能ですか?
AUTH_USER
要求変数。 Webアプリが匿名アクセスを許可している場合、これは空になりますが、サーバーが基本認証またはWindows統合認証を使用している場合、認証されたユーザーのユーザー名が含まれます。
Active Directoryドメインで、クライアントがInternet Explorerを実行しており、Webサーバー/ファイルシステムのアクセス許可が適切に構成されている場合、IEはサーバーにドメイン資格情報をサイレント送信し、AUTH_USER
はMYDOMAIN\user.name
ユーザーがWebアプリに明示的にログインする必要はありません。
IISでphp mysqlを実行しています-$_SERVER["AUTH_USER"]
を使用できますif IIS->認証でWindows認証を有効にして有効にしますoff匿名認証(重要)
私はこれを使用してユーザーとドメインを取得しました:
$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']
認証済みユーザーのユーザーとドメイン( 'USER\DOMAIN')をIE-または渡す前にFirefoxでプロンプトと認証を行います。
情報はセッションベースであるため、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/ をご覧ください。
おそらく authenticate theApacheのユーザー with mod_auth_kerb いくつかのファイルへの認証されたアクセスを要求することで…そのように、ユーザー名も利用可能であるべきだと思いますin PHPどこかの環境変数...おそらく、実行中に<?php phpinfo(); ?>
で確認するのが最善です。
環境に複数のドメインがあるため、regexでpreg_replaceを使用してDOMAIN \なしのユーザー名のみを取得します。
preg_replace("/^.+\\\\/", "", $_SERVER["AUTH_USER"]);
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
getenv('USERNAME')
と言うことができます
これは単純なNTLM AD統合の例で、Internet Explorerでのシングルサインオンを許可し、他のブラウザーでのログイン/構成が必要です。
PHPの例
<?php
$user = $_SERVER['REMOTE_USER'];
$domain = getenv('USERDOMAIN');
?>
Apache httpd.confファイル内
LoadModule authnz_sspi_module modules/mod_authnz_sspi.so
<Directory "/path/to/folder">
AllowOverride All
Options ExecCGI
AuthName "SSPI Authentication"
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIOmitDomain On
Require valid-user
Require user "NT AUTHORITY\ANONYMOUS LOGON" denied
</Directory>
モジュールが必要な場合は、次のリンクが役立ちます。
このコードを使用してください:
Shell_exec("wmic computersystem get username")
AUTH_USERが特定のドメイングループの一部であるかどうかを把握しようとする参照。これを行う巧妙な方法は、テキストファイル(空白でも可)でロックダウンフォルダーを作成することです。検証するセキュリティ/ディストリビューショングループのみを持つようにセキュリティを設定します。 @file_get_contentsを実行すると(<---警告を投げます)...ユーザーがグループアクセス権を持っていない場合、ファイルコンテンツを取得できず、その特定のADグループアクセス権を持ちません。これは単純であり、素晴らしく機能します。
いいえ。ただし、ユーザーが1組の資格情報を維持できるように、Active Directory管理者にLDAPを有効にしてもらうことができます。
get_user_nameはgetenv( 'USERNAME')と同じように機能します。
Getenv( 'USERNAME')を使用してエンコード(キリル文字)の問題が発生しました