2016-11-03 8 views
0

私は以下の制限がHTTP要求を許可しないように私のプロジェクトを設定したいと思います:フォースASP .NETでのWeb API(403)

  1. それは、すべてのAPIのためのグローバルな制限である必要があります
  2. ハードコードされている必要があります(IISのAPPで「Require SSL」を押さないでください)
  3. 「リダイレクト」はありません - エラーを返すだけです(403)

私の理想的なオプションwoulインストーラで実行されるスクリプトによって「SSLの要求」を設定する必要があります。

+1

試しましたか?働いているかしていないか? – CGritton

+0

着信要求のスキームを検査し、httpsでなければ403を返すグローバルアクションフィルタ。 – Nkosi

答えて

1

これは、要求を検査し、スキームがsslに設定されていないときに応答する単純なActionFilterを書くことによって達成できます。あなたはおそらく、あなたのアプリケーションがブートストラップがあるときWebAPIの構成でグローバルフィルタとして登録したいと思う、これはどこにでも適用するようにするには

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

:非常に最小限の実装は次のように見えるかもしれません。

Webを少し検索すると、より堅牢なロジックを備えた多くの類似したフィルタの例が見つかることがあります。

関連する問題