1

フォーム認証を使用するASP.NETアプリケーションがあります。また、同じアプリケーションプールを使用し、同じweb.config認証設定を使用して、(仮想ディレクトリではなく)別のアプリケーションとしてサブフォルダーを設定しています。

どういうわけか、私にはわかりませんが、これら2つのアプリケーションは同じ認証を共有していません。たとえば、FormsAuthentication.SetAuthCookieは独立して機能しているようで、User.Identity.Nameは2つのアプリケーションで異なる値を返します。

私の質問は、どうすれば同じ認証を共有できるのかということです。一方のアプリにログインして、もう一方のアプリに同じIDで表示したい。.ASPAUTH cookieの値が同じであることがわかります(明らかに、同じドメインに属しているため)。しかし、シングルサインオンはどのように機能しますか?

ありがとうThemos

4

1 に答える 1

4

アプリケーションは同じAppPoolにありますが、マシンキーは2つで異なります。通常、認証Cookieはマシンキーで暗号化されます。

マシンキーのデフォルトの動作は、IsolateAppsを使用することです。これにより、アプリケーションプールではなく、IISサイトアプリケーションごとに異なるマシンキーが生成されます。

2つの異なるマシンキーがあるため、アプリケーション間で認証Cookieを復号化することはできません。両方のアプリケーションに静的マシンキー(同じ)を追加する必要があります。

このようなサイトを使用して、独自のマシンキーを生成できます。

さらに、MSDNの記事「アプリケーション間でのフォーム認証」では、2つのアプリケーション間で一致する必要のある設定も指定されています。

于 2013-03-20T15:07:15.737 に答える