1

記事Working with SSL in Web APIに基づいて、Web API (2.1) コントローラーのメソッドに SSL を要求する認証フィルターを実装しました。

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true,
                AllowMultiple = false)]
public sealed class RequireHttpsAttribute : AuthorizationFilterAttribute
{
    public override void OnAuthorization(HttpActionContext actionContext)
    {
        if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
        {
            actionContext.Response = new HttpResponseMessage(HttpStatusCode.Forbidden)
                                         {
                                             ReasonPhrase = "HTTPS Required"
                                         };
        }
        else
        {
            base.OnAuthorization(actionContext);
        }
    }
}

これは問題なく動作します - 一部の Web サーバーでは。Web Farm Framework (WFF) がリバース プロキシとして使用されている場合、(有効な HTTPS 要求をブロックすることによって) 失敗する可能性があります。

WFF は、X-Forwarded-Protoリバース プロキシのデファクト スタンダードである header を追加します。

標準プロキシの有無にかかわらず、このコードを修正するにはどうすればよいですか?

4

1 に答える 1