1

リクエストのゾーンに基づいて認証を設定することは可能ですか?基本的にはイントラネットタイプのアプリケーションであり、機密情報はほとんどありません。

組織内からリクエストを実行する場合は、匿名ユーザーを許可しても問題ありません。

ただし、外部リクエストの場合は、401認証チャレンジを取得する必要があります。外部リクエストは単一のファイアウォールから送信されるため、IP / IP範囲は、外部リクエストか内部リクエストかを指定するのに適しています。

現在、web.configファイルでWindows認証用に構成されています。

<authentication mode="Windows" />
<authorization>
  <deny users="?" />
</authorization>
4

1 に答える 1

1

このルールをファイアウォールで直接処理する方が簡単です。

別の方法として、 IIS レベルでIP セキュリティを構成し、クライアント IP でフィルター処理することもできます。

ただし、ファイアウォールを制御できない場合は、着信 IP アドレスをチェックしてリクエストを許可/拒否するカスタム Authorize 属性を作成できます。

public class IpBasedAuthorizeAttribute: AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var ip = httpContext.Request.UserHostAddress;
        return IsAllowed(ip);
    }

    private bool IsAllowed(string ip)
    {
        // TODO: do your checks here and return true or false
        // depending on whether the IP address is allowed to 
        // access the application or not
        throw new NotImplementedException();
    }
}

次に、個々のコントローラー/アクションをこの属性で装飾するか、すべてのリクエストに適用する場合はグローバル承認属性として登録します。

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
    filters.Add(new IpBasedAuthorizeAttribute());
}
于 2012-10-09T15:25:51.033 に答える