2013-03-20 31 views
1

我有一个带有Forms身份验证的ASP.NET应用程序。我也有一个子文件夹设置作为一个单独的应用程序(不是虚拟目录),使用相同的应用程序池并使用相同的web.config身份验证设置。应用程序之间的表单身份验证

由于某些原因,我不明白,这两个应用程序不共享相同的身份验证。例如,FormsAuthentication.SetAuthCookie似乎独立工作,并且User.Identity.Name在两个应用程序中返回不同的值。

我的问题是,他们如何共享相同的身份验证?我想登录到一个应用程序,并出现在另一个相同的身份。我可以看到.ASPAUTH cookie具有相同的值(显然,因为它们位于同一个域中)。但是单点登录如何工作?

感谢 Themos

回答

4

即使应用程序在同一个应用程序池,机器按键是两个不同的。通常情况下,认证Cookie使用机器密钥加密。

机器密钥的默认行为是使用IsolateApps,它会为每个IIS站点应用程序生成不同的机器密钥,而不是应用程序池。

由于您有两个不同的机器密钥,他们无法解密应用程序之间的身份验证cookie。您需要为两个应用程序添加一个静态机器密钥(这是相同的)。

您可以使用sites like this one来生成您自己的机器密钥。

此外MSDN文章,Forms Authentication Across Applications还规定,需要在两个应用程序之间的设置相匹配。

相关问题