2

次のように Azure クラウド サービスをセットアップしました。

<Sites>
  <Site name="Web" physicalDirectory="../SampleWebsite/">
    <Bindings>
      <Binding name="HttpIn" endpointName="HttpIn" />
    </Bindings>
  </Site>
  <Site name="Admin" physicalDirectory="../SampleWebsite/Admin">
    <VirtualApplication name="Admin" physicalDirectory="../SampleWebsite/Admin">
    <Bindings>
      <Binding name="HttpsIn" endpointName="HttpsIn"/>
    </Bindings>
  </Site>
</Sites>
<Endpoints>
  <InputEndpoint name="HttpIn" protocol="http" port="80" />
  <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="www.domain.com" />
</Endpoints>
<Certificates>
  <Certificate name="www.domain.com" storeLocation="LocalMachine" storeName="My" />
</Certificates>

https://www.domain.com/Adminディレクトリに SSL を要求しようとしています。ただし、この構成では、SSL なしでこの URL に接続できます。Azure のサブディレクトリで SSL を要求する方法はありますか?

4

2 に答える 2

2

MVC を使用している場合は breischi の回答を使用し、SSL を介して強制するコントローラーやアクションに [RequiresSSL] 属性を実装します。それ以外の場合は、Url Rewrite を使用してタスクを実行することもできます (web.config にルールを追加します)。

<rule name="Force HTTPS" enabled="true">
    <match url="^.*/Admin/(.*)$" ignoreCase="false" />
    <conditions>
        <add input="{HTTPS}" pattern="off" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/Admin/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
于 2012-12-08T00:57:37.243 に答える
1

/SampleWebsite/ に /Admin/ サブディレクトリのすべてのコードがある場合、ユーザーが HTTP で接続するのを防ぐ方法はないと思います。ここにはいくつかのオプションがあると思います。

  1. アプリケーション レベルで HTTPS を適用します。アプリケーションがどのように編成されているかに応じて、それを行う方法はたくさんあります。たとえば、ASP.NET MVC を使用している場合は、次のオプションがあります。また、Global.asax ハンドラーのコードを使用するか、HttpModule を使用するか、その他の方法で独自のソリューションを作成することもできます。
  2. /Admin/ サブディレクトリを独自の別のサイトに分割します。HTTP で提供されているサイトに /Admin/ サイトのコードが含まれていないことを確認してください。そうすると、そのコンテンツを提供することはできません。/Admin/ サイトにサービスを提供するために、.csdef に別のサイトをセットアップします。これは既にほとんど完了しています。
于 2012-12-07T23:41:38.477 に答える