0

次の制限付きで http リクエストを許可しないようにプロジェクトを構成したいと考えています。

  1. これは、すべての API に対するグローバルな制限である必要があります (web.config、インストーラーのスクリプトなどを介して)。
  2. ハードコーディングする必要があります (IIS の APP で [SSL が必要] を押さないでください)。
  3. 「リダイレクト」なし - エラー (403) を返すだけ

私の理想的なオプションは、インストーラーで実行されるスクリプトで「SSL が必要」を構成することです。

4

1 に答える 1

2

ActionFilterこれは、スキームが ssl に設定されていない場合にリクエストを検査して応答する単純なものを作成することで実現できます。非常に最小限の実装は次のようになります。

public class RequireHttpsAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
        {
            actionContext.Response = new HttpResponseMessage(HttpStatusCode.Forbidden);
        }
    }
}

これをどこにでも適用するには、アプリケーションのブートストラップ時に WebAPI 構成でグローバル フィルターとして登録する必要があります。それは次のようになります。

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Filters.Add(new RequireHttpsAttribute());

        // ... More configuration ...
    }
}

Web を少し検索すると、ニーズにより適した、より堅牢なロジックを備えた同様のフィルターの例が多数見つかります。

于 2016-11-03T13:02:47.317 に答える