ウェブサーバーが同じネットワーク上にある間に、現在ログインしているリモートコンピュータのユーザーのユーザー名をウェブサイトから取得するにはどうすればよいですか?

私はあなたの多くが私の質問が既に尋ねられ、答えられていると思うことを知っていますが、私が試した多くのオプションについて議論したいだけです。

今私のセットアップはこれです。 Windows XPを実行している約50のクライアントがプロフェッショナルです。 Windows
Server 2003を実行している1台のサーバー。サーバーA 1台のサーバーがsquidをプロキシサーバーとLinux
OSとして実行しています。それをサーバBと呼ぶ
1つのサーバーがApacheを実行しています(ただし、サーバーを起動しています)。サーバーCと呼んでください。
現在、クライアントはWindowsのアクティブディレクトリを使用してドメインにログインし、ドメインサーバはサーバAです。
ブラウザは、サーバBであるプロキシサーバを使用するように設定されています。

プロキシサーバーが制限を超えるダウンロードを許可しないように設定されています(私の場合は100
Mbです)。クライアントが制限を超える要求を行うと、エラーページが表示されます。

今私はエラーページを置き換え、それはマシンCで実行されている私のウェブサイトにユーザーをリダイレクトします。私はまた、ユーザーがアクセスしようとしているリンクを与えられています。次に、どのユーザーがシステムにログオンしているかを調べる必要があります。だから私はファイルをダウンロードし、それぞれのユーザーにダウンロードの完了を通知することができます。

今私がやったことは、ユーザー名や電子メールなどを求めるだけです。
しかし、私は再び彼の名前を入力の喧騒からユーザーを保存したい。

私は次のオプションを試しました。

  1. .NET http://www.codeproject.com/KB/cs/getusername。 aspx
    (動作しませんでした。 私は何かが恋しくなるかもしれない)
  2. wmic http://www.robvanderwoude.com/ntadmincommands.php#Cmd02
    (働いた)
  3. イカによるLDAP(LDAP、アクティブディレクトリなど)

今私はこれに関する質問があります。

  1. これらのすべてのオプションはありますか、何か不足していますか?
  2. なぜ.NETオプションが機能しなかったのですか?
  3. さまざまなsquid認証方法を使用できますが、ログオン後に少なくとも1回ログインする必要があります。私はこれを望んでいない。ユーザーがログインしたときに認証を使用する方法はありますか?ユーザー名とパスワードを再度要求しないでください。
ベストアンサー

ASP.Netアプリケーション内でユーザーのドメインログインを取得するには、
Request.ServerVariables(
"logon_user")
を使用する必要があります。

ただし、その他の考慮事項もあります。

1)Webサイトに対してのみWindows認証を有効にする必要があります。

2)あなたのユーザーのブラウザ(IEを前提とする)は、統合Windows認証を有効にするを有効にする必要があります。

3)ブラウザーからASP.Netアプリケーションへの要求が間接的(つまり1ホップ以上)である場合、関連するすべてのシステムがKerberos認証用に構成されていることを確認する必要があります(これは非常に困難です)。

ASP.Netをセットアップして、エンドユーザーを偽装するを使用すると、元のコードが正しく動作するようになります。ただし、これはスレッドで発生するすべてのこと(データベースアクセス、ファイルアクセスなど)がエンドユーザーとして実行されることを意味します。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です