6

Web アプリケーション (.NET 3.5+) のアイデアを考えると

  • ブラウザ
  • ウェブアプリ

フォームを使用した認証は、同様のコード行になります

FormsAuthentication.SetAuthCookie(strUsrNm, True)

これは、負荷分散されていないサーバー インスタンスでは問題ありません。負荷分散された状態 (スティッキーセッションなし/無限) で認証がどのように機能し、クライアント IP、ユーザーパスワード、またはログインをブラウザーに保存することはできません。

  • ブラウザ
  • ロードバランサ
  • || Web アプリ (サーバー 1 上) || Web アプリ (サーバー 2 上)

制限: データベース セッションなし、AD サーバーなし (例: 外部ユーザーへのケータリング)

つまり、負荷分散された状況で、ユーザーが再認証せずに他のサーバーに対して認証された場合、アプリケーションはユーザーが誰であるかをどのように認識しますか。

ありがとう

4

1 に答える 1

18

Cookie を使用すると、認証チケットが Cookie に保存されるため、すべてのサーバーが認証されたユーザーを認識します。どのサーバーもこの Cookie を受け取り、チケットを解読してユーザーを認証できます。

ここでは、フォーム認証のしくみについて詳しく説明します。

また、ファーム上のすべてのサーバーが、暗号化と復号化に使用されるマシン キーを共有していることを確認する必要があります。

アプリケーションを Web ファームに展開する場合は、各サーバーの構成ファイルが、それぞれハッシュと復号化に使用される validationKey と decryptionKey に対して同じ値を共有していることを確認する必要があります。これは、どのサーバーが連続する要求を処理するかを保証できないため必要です。

手動で生成されたキー値を使用すると、設定は次の例のようになります。

<machineKey
validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7 AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F" validation="SHA1" decryption="AES" />

詳細はこちら

于 2011-02-24T12:08:39.950 に答える