Azure WebSitesでClientCertificateを取得するためにはいくつか設定が必要でネットで検索してもとても古いWebRoleの記事しか出てこないorポータルのSSLの設定の記事しか出てこなくて苦労したのでここにメモを残します。
AzureWebSitesでクライアントから送信された証明書ファイルを取得するコードは以下のようになります。
Controllerでは
//System.Web.HttpRequestBaseオブジェクト
var cert = Request.ClientCertificate;
ApiControlerでは
//System.Net.Http.HttpRequestMessageオブジェクト
var cert = Request.GetClientCertificate();
で取得できます。
しかしAzureへアップロードした環境ではクライアント証明書を有効にする設定が必要です。設定は以下の手順でやります。
設定したいサイトのノードをクリックします。
subscriptions –> [your subscription] –> resouceGroups –> [your resource group] –> providers –> Microsoft.Web –> sites –> [my site]
と辿っていきます。
書き込み可能な状態になっていることを確認します。画面右上部のReadWriteが選択されていること)を確認します。
右のペインのEditをクリックして編集状態にします。
clientCertEnabledの値をtrueにします。
PUTをクリックして変更内容をサーバーへ送信します。
これでクライアント証明書が有効になりました。