49

そのページで現在のユーザーのIPとホスト名を抽出できるPHP Webアプリケーションをイントラネット上に持っていますが、Active Directory/Windowsユーザー名も取得/抽出する方法があるかどうか疑問に思っていました. これは可能ですか?

4

16 に答える 16

49

AUTH_USERリクエスト変数を確認してください。Web アプリで匿名アクセスが許可されている場合、これは空になりますが、サーバーが基本認証または Windows 統合認証を使用している場合は、認証されたユーザーのユーザー名が含まれます。

Active Directory ドメインでは、クライアントが Internet Explorer を実行していて、Web サーバー/ファイル システムのアクセス許可が適切に構成されている場合、IE はサイレントにドメイン資格情報をサーバーに送信し、ユーザーが Web アプリに明示的にログインする必要AUTH_USERはありません。MYDOMAIN\user.name

于 2008-10-03T19:57:20.110 に答える
17

IISでphp mysqlを実行しています-IISでWindows認証をオンにすると使用でき$_SERVER["AUTH_USER"] ます->認証と匿名認証をオフにします(重要)

これを使用して、ユーザーとドメインを取得しました。

$user = $_SERVER['AUTH_USER'];

$userは次のような値を返します:DOMAIN\username私たちのネットワークではDOMAIN\、文字列から を削除しただけです。

これは、IE、FF、Chrome、Safari (テスト済み) で動作します。

于 2010-07-29T06:51:04.607 に答える
4

PHP LDAP ライブラリ関数を見てください: http://us.php.net/ldap

Active Directory は [ほとんど] LDAP 標準に準拠しています。

于 2008-10-03T19:57:39.893 に答える
3

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でもシングル(っぽい)サインオンが可能...

-クレイグ

于 2009-12-24T12:02:58.947 に答える
2

リモート ユーザーの 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/をご覧ください。

于 2012-12-21T08:29:50.833 に答える
2

一部のファイルへの認証済みアクセスを要求することで、おそらくmod_auth_kerbを使用して Apacheでユーザーを認証する ことができます...そのようにすると、ユーザー名はどこかの PHP 環境変数でも利用できるはずです...おそらく、実行したら確認するのが最善です.<?php phpinfo(); ?>

于 2008-10-03T20:13:08.440 に答える
1

あなたは言うことができますgetenv('USERNAME')

于 2010-05-28T21:58:43.830 に答える
1

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

于 2011-10-26T06:49:35.587 に答える
0

get_user_name は getenv('USERNAME'); と同じように機能します。

getenv('USERNAME') を使用してエンコーディング (キリル文字) の問題が発生しました

于 2012-04-24T07:58:04.473 に答える
0

いいえ。ただし、できることは、Active Directory 管理者に LDAP を有効にしてもらい、ユーザーが 1 つの資格情報セットを維持できるようにすることです。

http://us2.php.net/ldap

于 2008-10-03T19:56:55.230 に答える
-2

このコードを試してください:

$user= shell_exec("echo %username%"); 
    echo "user : $user";

Windows(AD)のユーザー名をphpで取得します

于 2017-03-07T16:21:20.177 に答える