ASP.NET MVC のコントローラにて SSL 接続を要求する方法

SSL というのはひと言で言うと、暗号化接続を行う仕組みです。

通常、ウェブサイトは HTTP というプロトコルを用いて、ウェブサーバーとクライアント(つまりブラウザ)の間で、 必要な文書やデータのやり取りを行います。

プロトコルレイヤーで考えたときに、SSL は TCP と HTTP の間に挟まる形で、HTTP に暗号化機能を追加するような形になってます。

HTTP がセキュア (Secure, 安全) になった、ということで、HTTP over SSL (SSL の上にのった HTTP) を、HTTP に S をくっつけて、 HTTPS など呼んだりします。

基本的に HTTP はデータをそのまま送信します。

データはインターネット上をドンブラコ、ドンブラコと流れていきますが、データの中継を行うネットワーク機器上では、 今どんなデータが流れているか、丸見えです。

つまり、データはそのまま読めてしまいますから、 "username=suzuki&password=mypassword" などというデータが見えていたら、これは危ないわけです。

特に、こうしたパスワードとアカウント情報(まとめてクレデンシャルなどといいます)を送る場合や、 クレジットカード番号を入力する必要がある場合などは、通信を暗号化して第三者がデータを覗き見できないようにするべきです。

こうした場合に現在、広く用いられているのが SSL 通信 (HTTPS) です。

ここでは、ASP.NET MVC の仕組みでウェブサイトを構築しているときに、簡単に SSL を必要とするよう設定する方法を示します。

SSL 接続の要求 - RequireHttps

結論から言えば、MVC の仕組みで SSL を要求するのは大変簡単です。

コントローラのアクションメソッドの属性として、RequireHttps を設定すれば OK です。

次の例をみてください。

SSL 接続の要求 - RequireHttps

ここでは EmployeeController の Index メソッドに RequireHttps を設定しています。

こうすることによって、http://www.example.com/Employee/Index/ としたときに、SSL 通信へとリダイレクトされます。

(Index がデフォルトのメソッドに設定されていれば、http://www.example.com/Employee/ への要求と同等)

次のログを見て分かるように、自動的に HTTP ステータスコード 302 "Found" を返し、 HTTP ヘッダーの Location にて https://... へとクライアントを誘導しています。

SSL 接続の要求 - RequireHttps

アプリケーションの開発側としては、サーバーの設定をするより、ずっと簡単にリダイレクトできていいですね。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 ASP.NET 入門