asp.net-mvc - 管理者権限で実行 - iis_iusrs iis10




IIS7-パスワード保護開発サーバー (3)

フォーム認証/メンバーシップを使用して認証する、ASP.NET MVC WebアプリケーションでIIS 7.0を実行している開発サーバーがあります。

私は、権限のないユーザーがこのサイトを閲覧するのを防ぐことができる必要があります。 しかし、お客様は簡単なユーザー名/パスワードを入力してアクセスできるはずです。

そうした後、保護されていないサイトに来たかのようにフォーム認証を使用してWebアプリケーションとやりとりすることができます。

助言がありますか?


私たちは、IISが自動的に特定のIP範囲を許可し、誰かにログインダイアログを表示するカスタムモジュールを作成しました。 彼らがログインすると、その事実がセッションに保存され、単にリクエストを通過させました。

正常に動作し、IISのサイトやサービスに適用されます。


私はちょうどHelicon Apeでこれをしました。 無料のライセンスには3つのサイトが含まれています。

これをサイトで使用する場合は、サイトのライセンスが有効になっているかどうかを確認してください(スタートメニュー> helicon> ape>マネージャ、ヘルプ、ライセンスマネージャ)。


私の以前の答えは、フォームの認証と基本的なhttp認証がII7統合モードで並行して実行できると述べています。 私は完全に間違っていて、それ以来簡単な解決策を作りました。

カスタムHttpModuleを使用すると、サイド正規フォームauthに沿って基本認証を追加できます

public class CustomBasicAuthHttpModule : IHttpModule
{
    private HttpApplication httpApplicationContext;

    public void Dispose()
    {
    }

    public void Init(HttpApplication context)
    {
        this.httpApplicationContext = context;
        context.BeginRequest += this.OnBeginRequest;
        context.EndRequest += this.OnEndRequest;
    }

    private void OnBeginRequest(object sender, EventArgs e)
    {
        // your logic of checking Auth header goes here
        if (this.httpApplicationContext.Request.Headers["Authorization"] != "Basic base64-encoded-user:pass")
        {
            this.httpApplicationContext.Response.StatusCode = 401;
            this.httpApplicationContext.Response.End();
        }
    }

    private void OnEndRequest(object sender, EventArgs e)
    {
        if (this.httpApplicationContext.Response.StatusCode == 401)
        {
            this.httpApplicationContext.Response.AddHeader("WWW-Authenticate", "Basic");
        }
    }

あなたのweb.configで

  <system.webServer>
    <modules>
      <add name="CustomBasicAuthHttpModule" type="Namespace.CustomBasicAuthHttpModule, AssemblyName"/>
    </modules>
  </system.webServer>






passwords