在多个 Web 应用程序上使用 ASP.Net 身份
Using ASP.Net Identity on multiple web applications
我有几个应用程序托管在同一个 IIS(不同的上下文根)上,它们都使用 Microsoft.ASPNet.Identity 2.1 NuGet 包进行保护。但是目前,当我登录其中一个应用程序时,下次访问任何其他应用程序时都会提示我再次登录。我一次只能登录一个应用程序。
我猜他们都使用相同的 cookie 来存储登录令牌,所以当您登录一个应用程序时,它会重置 cookie,这对其他应用程序的请求变得无效。
我有哪些解决方案?我不介意必须单独登录每个应用程序,那么是否可以将每个应用程序配置为使用不同的 cookie?
或者,每个应用程序实际上在数据库中共享同一个用户 table,因此可以对其进行配置,以便当您登录其中一个应用程序时,其他应用程序也会登录英寸
我认为单点登录可能是您的解决方案。在 Google 上搜索它。
对于您的启动,您可以参考下面的几个链接:
Claim base Single Sign-on for Web and Azure
Single Sign-on for existing MVC App
希望这就是您正在寻找的并且能够解决您的问题。
是的,这是因为您在 'localhost' 上共享同一个 cookie。
这不会在生产环境中发生,因为 cookie 只是域。 (当然,除非所有应用程序都部署到同一个域)。
这在本地主机上有点烦人,但很容易解决。只需更改每个应用程序的 cookie 名称即可。
这因身份版本而异,但您正在寻找的是这样的东西:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
CookieName = "MyApp1", // <-- add this, with different names for each app
// ...
});
通常在 Startup.Auth.cs
或 Startup.cs
文件中找到。
由于在所有应用程序上使用相同的 cookie(如果它们共享 subdomain.domain),您需要获取 MachineKey(验证密钥和解密密钥)AND 相同的 cookie 名称您所有的应用程序。
web.config 上的类似内容:
<machineKey
validationKey="..." <-- some valid validation key
decryptionKey="..." <-- some valid decryption key
validation="SHA1"
decryption="AES"/>
每个应用有不同的 cookie 名称:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
CookieName = "CookieNameHere",
});
如本页所示http://tech.trailmax.info/2014/07/rename-authentication-cookie-name-of-asp-net-identity/
我有几个应用程序托管在同一个 IIS(不同的上下文根)上,它们都使用 Microsoft.ASPNet.Identity 2.1 NuGet 包进行保护。但是目前,当我登录其中一个应用程序时,下次访问任何其他应用程序时都会提示我再次登录。我一次只能登录一个应用程序。
我猜他们都使用相同的 cookie 来存储登录令牌,所以当您登录一个应用程序时,它会重置 cookie,这对其他应用程序的请求变得无效。
我有哪些解决方案?我不介意必须单独登录每个应用程序,那么是否可以将每个应用程序配置为使用不同的 cookie?
或者,每个应用程序实际上在数据库中共享同一个用户 table,因此可以对其进行配置,以便当您登录其中一个应用程序时,其他应用程序也会登录英寸
我认为单点登录可能是您的解决方案。在 Google 上搜索它。
对于您的启动,您可以参考下面的几个链接:
Claim base Single Sign-on for Web and Azure
Single Sign-on for existing MVC App
希望这就是您正在寻找的并且能够解决您的问题。
是的,这是因为您在 'localhost' 上共享同一个 cookie。 这不会在生产环境中发生,因为 cookie 只是域。 (当然,除非所有应用程序都部署到同一个域)。
这在本地主机上有点烦人,但很容易解决。只需更改每个应用程序的 cookie 名称即可。
这因身份版本而异,但您正在寻找的是这样的东西:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
CookieName = "MyApp1", // <-- add this, with different names for each app
// ...
});
通常在 Startup.Auth.cs
或 Startup.cs
文件中找到。
由于在所有应用程序上使用相同的 cookie(如果它们共享 subdomain.domain),您需要获取 MachineKey(验证密钥和解密密钥)AND 相同的 cookie 名称您所有的应用程序。
web.config 上的类似内容:
<machineKey
validationKey="..." <-- some valid validation key
decryptionKey="..." <-- some valid decryption key
validation="SHA1"
decryption="AES"/>
每个应用有不同的 cookie 名称:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
CookieName = "CookieNameHere",
});
如本页所示http://tech.trailmax.info/2014/07/rename-authentication-cookie-name-of-asp-net-identity/