【ASP .NET MVC Web API】SSL使いたい!
おひさしぶりでござます。
開発がたのしくてたのしくて長らくさぼっておりましたw
やっぱりC#さんは神ですねー
昔は会社でC# 家でiOSでしたが最近は逆転ー
ってことでASP .NET MVC 4 Web APIでごにょごにょしております。
微妙に某あの子に似てきてますがしょーがないですねー
メソッド名とかクラス名とか設計とか似ちゃうよねそりゃ
とりあえず本題
Web APIでSSLつかいたいよね。うん。
はい、以下のよーなクラスを用意しましょう。
using System; using System.Net; using System.Net.Http; using System.Web.Http.Controllers; using System.Web.Http.Filters; namespace Hoge.Hoge.Hoge { public class RequireHttpsAttribute : AuthorizationFilterAttribute { public override void OnAuthorization(HttpActionContext context) { if (context.Request.RequestUri.Scheme == Uri.UriSchemeHttps) base.OnAuthorization(context); else context.Response = new HttpResponseMessage(HttpStatusCode.Forbidden); } } }
AuthorizationFilterAttributeがポイントですねー
なお、宣言はこうなっております
クラスにも付加できるんですねー
継承もできますねー
どの言語にも言えることですがちゃんと宣言は見ましょうねー
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)] public abstract class AuthorizationFilterAttribute : FilterAttribute, IAuthorizationFilter, IFilter
で、SSL使いたいAPIControllerまたはメソッドに付加しますー
public class HogeController : ApiController { [HttpGet] [RequireHttps] public HttpResponseMessage Get() { } }
認証はまた別の機会にー