Azure Web AppsはデフォルトでHTTPだけでなくHTTPSで暗号化接続もできる。

デプロイしたアプリのURLを「http://」にしたら暗号化なしで、「https://」にしたらSSL暗号化接続になるだけで、簡単に使える。

公開してかまわない情報しかないアプリの場合は特に気にする必要はないが、 ログインして、個人情報とかの機密情報も見れたりするアプリを作るとき、HTTPでアクセスをできない方がよい。間違ってパスワードをHTTPで平文のまま送信するのは防ぎたい。

Spring MVCの学習とかのために、Azure Web Appsに何か作ったりしてみようかと思っていたけど、とりあえずモチベーションが上がる程度に使えるアプリというと、個人用のデータを置くようなサイトにどうしてもなってしまうので、フォーム認証でパスワード保護して、さらにHTTPSを強制できる方法が必要だった。

いくつかあった中で、サンプル付きで分かりやすかったページ(英語)。
HTTPS only on Azure App Service Web Apps

公開フォルダのweb.configに URL Rewriteルールを追加することで、「http://」で来たリクエストを「https://」に自動的にリダイレクトするという方法があるということだった。

上のリンク先記事を参考に、HTTPS強制だけを実行する web.configを作ってみた。
ファイルのリンク

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Redirect to https">
                    <match url="(.*)"/>
                    <conditions>
                        <add input="{HTTPS}" pattern="Off"/>
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/>
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Azure Web Appsはクラウド上のIISの公開フォルダを使えるサービスなので、web.configでできる設定ならIISの各種設定を適用できるということのようだ。

IISへリクエストが到達した時点でリダイレクトされるので、アプリの実装に関係なく動作する。ASP.NETでもJavaでもNode.jsでもなにを使っていても使えるのがよい。

TechNetにこのあたりの技術の詳細情報があったのでリンクしておく。これを読むと、IISでの URL Rewrite設定のより細かい部分が分かりそう。
TechNet:URL 書き換えモジュール用の書き換えルールの作成
URL 書き換えモジュール構成のリファレンス