2008-09-05 23 views
1

私は、内部のユーザーのために外部のアプリケーションとは異なる動作をするべきWebアプリケーションを持っています。 Webアプリケーションはインターネットを介して利用可能であり、したがって内部のユーザにも明らかに利用可能である。ブラウザのIPアドレスまたはホスト名を取得する方法は?

すべてのユーザーは匿名で認証されていませんが、外部ユーザーとは内部ユーザーの表示方法が異なります。私のコードでやっていることは、Request.UserHostNameを使用してからDns.GetHostEntryを使用しています。結果は、web.config(これは*.mydomain.localのようなもの)の設定と比較されます。比較結果が肯定的な場合は、内部ユーザーが見るべきHTMLをレンダリングします。それ以外の場合は、外部ユーザーが表示するHTMLをレンダリングします。

しかし、私の問題は、いつも期待値をRequest.UserHostNameから得るわけではないということです。開発現場では、ブラウザを実行しているマシンのIP-number(?)が表示されますが、お客様のサイトでは私がIP-numberのユーザマシンを取得していないので、他にもIP-numberがあります。ブラウザには、プロキシセットなどがありません。

Request.UserHostName以外のものを使用する必要がありますか?

答えて

3

IPアドレスも使用することをお勧めします。私はまったく同じ状況を扱っています。今のところ認証システムを設定しています.EpsoとRobin Mによって記述された条件はまさに何が起こっているのかです。サイトに来る外部ユーザーは私に実際のIPアドレスを与え、すべての内部ユーザーはウェブサーバーが座っているプラ​​イベートサブネットにゲートウェイマシン(ルーター)のIPを提供します。

私はちょうどその1つのIPをチェックしてそれに対処する。私はゲートウェイのIPを取得する場合、私は内部アクセスを提供します。私が他のものを手に入れたら、彼らは私の場合には追加の認証を必要とする外部のものを手に入れます。あなたの場合、それはちょうど異なるインターフェースを意味するでしょう。

0

内部のクライアントが外部のDNS名を使用してサーバに到達できるようにするために、ある種のNATを実行するファイアウォールが存在する可能性があります。

お客様のサイトで取得するIP番号は、外部のカスタマーサーバIPと同じですか?その場合、その1つのIPアドレスをハードコードすることができます。そのファイアウォールの背後にあるすべての内部コンピュータは、同じIPアドレスを持っているように見え、それらを「内部」として分類できます。

0

IPアドレスが公開されているようです。ユーザーはhttp://www.myipaddress.comに移動します。これがあなたのソフトウェアに返されたIPアドレスと同じなら、これは間違いありません。

これを回避するために私が見ることのできる唯一の解決策は、VPN経由でasp.netアプリケーションを保持するマシンに接続するか、他の種類の認証を使用することです。後者はおそらく最良の選択肢です。

2

Try Request.UserHostAddressは、クライアントのIPアドレスを返します。内部ネットワークがLAN用に予約されたIPアドレスを使用すると仮定すると、IPが内部か外部かをチェックするのは比較的簡単です。

0

カスタマーサイトのユーザーとサーバーの間にプロキシがある(ブラウザで設定する必要はありません)と思われます。ネットワーク構成によっては、内部プロキシまたは外部プロキシである可能性があります。

私はUserHostNameを使用しないでください。なぜなら、それはブラウザによって提示されているため、スプーフィングしやすいからです。 IPアドレスは、TCP/IP接続でIPアドレスを偽装する(および接続を維持する)のが難しいため、はるかに効果的です。それはまだ弱い認証ですが、このシナリオでは十分です。

クライアントとサーバの間にNATプロキシがある場合でも、IPアドレスを使用している場合でも、そのプロキシを経由して来るものはすべて信頼できると受け入れる必要があるかもしれません(私は外部/そのプロキシ)。

これが受け入れられない場合は、他の認証方法に戻ります。ログオンまたはVPN接続を必要とするのではなく、永続的なクッキーまたはクライアント証明書を検討し、内部のクライアントにのみ証明書を渡すこともできますが、クライアントにそれらを配布する方法が必要です。ワンタイムログオンに基づいて永久的なクッキーを確実に配信することができます。Cookieは、UserHostNameがドメイン名よりも推測できないクッキー値を作成する良い機会になるという点で、同様の方法でなりすますことができます。

関連する問題