記事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 を追加します。
標準プロキシの有無にかかわらず、このコードを修正するにはどうすればよいですか?