7

ログインしているユーザーのユーザー名を取得するためにHttpContext.Current.User.Identity.Nameを使用しています。これがどのように機能しているか (NTLM v2 / Kerberos を使用)、安全性について知りたいです。ユーザーは自分が別人になりすますことができますか?

基本的にセキュリティ上、気をつけていることや改善すべき点はありますか?

4

1 に答える 1

5

Windows認証を使用して認証している場合(NTLM / Kerberosについて言及しているため、そうであるように見えます)、(おおよそ)次のようになります

  • IE は、認証ヘッダーのないリクエストを Web サーバーに送信します。
  • IIS は 401 応答コードで要求を拒否し、必要な認証スキームをブラウザーに通知します (この場合、Kerberos を最初に試行してから NTLM にフォールバックするネゴシエート)。
  • 縁石ハンドシェイクは複数の接続で行われ、チケットは AD に対して検証されます
  • IIS はチケットを ASP.NET に渡します。ASP.NET は、Request オブジェクトを作成するプロセスで、要求に割り当てられたスレッドのプリンシパルにチケットの ID の詳細を設定します。
  • HttpContext.User にアクセスすると、現在のスレッドのプリンシパルが表示されます。

安全です。これは基本的に、ファイル共有または kerberos を使用するその他のものを介して Windows サーバーに接続するときに使用される認証タイプと同じです。実際には、IIS と Windows 自体が作業の大部分を行っています。ASP.NET は、結果をクエリする優れた方法を提供しているだけです。

于 2012-12-30T05:26:40.617 に答える