3

現在、複数のノード (最初は 2 つ) で実行されている Web 層を使用して、.NET Web アプリケーションを Azure クラウド サービスに移行しています。フォーム ベースの認証メカニズムを負荷分散環境で実行するには、どのように変更すればよいのでしょうか。私たちのアプリケーションは常に 1 台の物理サーバーに限定されていたため、これまで考慮する必要はありませんでした。

現在、web.config で保護されたフォルダーを次のように定義しています。

<location path="secure-area">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>

ログインページのコードは次のように機能します。

if accountIsValid = true then
   FormsAuthentication.SetAuthCookie(sessionID, False)
   response.redirect("secure-area/index.aspx")
end if

次に、アクティブなセッションが次のようにアプリケーション全体で取得されます。

Dim sessionID as string = User.Identity.Name.ToString

おそらく、このメソッドは複数のノード間でセッション状態を自動的に保持しませんか? コードを変更しなくても、Azure ファブリック コントローラーがこれらすべてを解決してくれるのではないかと考えました。たぶん希望的観測!

ヘルプやオンライン ガイドへのリンクをいただければ幸いです。

4

1 に答える 1

5

これは、Azureについての質問ではなく、負荷分散されたASP.NETアプリケーションを使用したフォーム認証についての質問です。フォーム認証では、サーバー上のmachineKeyを使用して、クライアントに送信されるCookieを暗号化します。デフォルトでは、このキーはインスタンスごとにサーバー上でランダムに生成されます。フォーム認証を複数のノードで機能させるには、web.configの両方のインスタンスでマシンキーが同じになるように設定する必要があります。次にいくつかの例を示します。

フォーム認証はWebロードバランサーで機能しますか?

http://msdn.microsoft.com/en-us/library/eb0zx8fc(v=vs.100).aspx

http://support.microsoft.com/kb/910443

うまくいけば、これはうまくいきます、幸せなコーディング!

于 2013-02-21T18:37:06.797 に答える