PHP で Windows ドメイン共有ドライブ上のファイルへのアクセスを実装する
P粉323224129
2023-08-30 23:11:13
<p>スタンドアロン マシンに大量のドキュメントが保存されており、PHP/IIS サーバーから提供する必要があります。問題は、ドキュメント ドライブが Active Directory ドメイン マシンに接続されており、Web サーバーが接続されていないことです。そのため、PHP がドライブにアクセスするために必要な認証された AD ユーザーをどこに提供すればよいかわかりません。 </p>
<p>PHP を呼び出す IIS アプリケーション プールがあり、作成した新しい Windows ユーザーとして実行されています (アプリケーション プールの場合は「Identity」、Web サイトの場合は匿名認証ユーザーに設定)。この新しいユーザーとしてサーバーにログインし、マップされたネットワーク ドライブを設定しましたが、調べた結果、これは行き止まりだと思いました。サービスは、マップされたドライブをマウントするような方法では Windows にログインしないと読みました。 </p>
<p>IP アドレスのみによる参照は機能に近づいていますが、認証エラーが発生します。オンラインで見つけた主な解決策は、ドライブにアクセスできるユーザーとしてアプリケーション プールを実行することですが、サーバーがその Windows ドメインにないため、それが可能かどうかはわかりません。 (ただし、私は AD の専門家でもありません)</p>
<pre class="brush:php;toolbar:false;">echo shell_exec('whoami'); //作成した Windows ユーザーの名前を出力します
echo scandir('\\\\192.168.1.120\\data$'); //ユーザー名/パスワードが見つかりません
echorim(shell_exec('dir \\\\192.168.1.120\\data$ 2>&1')); //ユーザー名またはパスワードが間違っています
echo scandir('Z:\\'); // パスが見つからないという PHP 警告
echo trim(shell_exec('dir Z: 2>&1')); //パスが見つかりません</pre>
<p>シンプルでハッキングのない解決策がない場合は、顧客が Web サーバーを AD ドメインに配置できるかどうかを確認できますが、それが他のサービスに意図しない副作用をもたらすかどうかはわかりません。サーバーが実行中です。 </p>
これらがパブリックであり、ユーザーがディレクトリに対して認証する必要がない場合は、それらをドメインに入れないでください。ただし、何らかの認証が必要な場合、または AD から情報を検索する必要がある場合は、DMZ で Active Directory アプリケーション モード (ADAM) を実行することを検討してください。 ADAM は標準の AD パーティションを同期しないため、関連する情報を AD からアプリケーション パーティションにコピーする必要がある場合があります。
もちろん、Web サーバーがドメイン コントローラーと同じネットワーク上にある場合は、Web サーバーをドメインに追加して管理性を高めることができます。