2

私は非常に驚いています。同じWebサイトで2つの独立したアプリケーション(たとえば、2つの異なるクライアント用)を作成しました。各web.configに個別のログイン/パスワードリストがありますが、最初のアプリケーションのHttpContext.Current.User.Identity.Nameを2番目のアプリケーションに取得できます。

セッション変数は2つの間で共有されませんが、それでもHttpContext.Current.User.Identity.Nameにとっては非常に安全ではありませんか?これは、クライアント2が、クライアント2のWebサイトを認証せずに、クライアント2のアプリケーションを参照しているクライアント1のユーザーにアクセスできることを意味します。

4

1 に答える 1

3

各アプリのweb.configのmachinekey要素で異なる復号化キーを使用すると、ユーザーは再ログインせずにアプリ間を移動できなくなります。

以下の例はMSDNからのものです:

<machineKey
  validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" 
  decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" 
  validation="SHA1" />

キーを生成する代わりにIsolateApps修飾子を使用することもできるかもしれませんが、キーを共有したいレベルでキーを具体的に設定すると、プロセスをより細かく制御できることがわかりました。これらのキーを生成するためのさまざまなツールをオンラインで見つけることができます。または、Microsoftの暗号クラスに基づいて独自のツールを作成することもできます。

IIS構造の上位レベルにあるweb.configで設定されたキーは、web.configで特にオーバーライドしない限り、子アプリに自動的に「下り坂」で流れることに注意してください。それがあなたの場合に起こったことである可能性があります。

于 2012-09-14T00:45:37.260 に答える