对于表单身份验证,我在web.config中使用了它(请注意域属性):
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" name=".ASPXAUTH" protection="Validation" path="/" domain=".myserver.dev" />
</authentication>
如何在Mvc 5中为新的ASP.NET Identity Framework配置子域之间的单点登录?
更多信息:
我正在创建一个多租户应用程序 . 每个客户端都在子域上:
client1.myapp.com
client2.myapp.com
我希望用户能够登录 client1.myapp.com
,然后转到 client2.myapp.com
并仍然登录 . 使用表单身份验证很容易 . 我正在试图弄清楚如何使用新的Identity Framework来实现它 .
编辑
这是最终为我工作的代码:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "Application",
LoginPath = "/Account/Login",
CookieDomain = ".myapp.com"
});
4 回答
在Startup.Auth.cs中,您将看到如下内容:
对于RC:
这已在RTM中删除,并替换为cookie auth的显式配置:
CookieAuthenticationOptions类有一个CookieDomain属性,我相信你正在寻找它 .
这让我疯狂,直到我得知Identity 2.0仍然依赖于机器密钥来加密身份验证cookie . 因此,如果您需要在不同子域上使用同一应用程序的两个实例,则需要为每个应用程序设置相同的机器密钥 .
So in summary:
CookieDomain = ".myapp.com"
在每个应用程序的Web配置中设置相同的机器密钥
这个答案让我设定了值:Does ASP.NET Identity 2 use machinekey to hash the password?
您需要在web.config中为所有网站/应用程序设置相同的machineKey .
所有网站必须至少具有此配置 .
http://msdn.microsoft.com/en-us/library/w8h3skw9(v=vs.85).aspx
这是一个例子
在Startup.Auth.cs文件中,在您的域中添加
CookieDomain
参数:然后,对于所有网站,您需要设置唯一的机器密钥 . 生成新的最简单方法是使用IIS:
在您的网站上找到“机器密钥”选项:
单击“生成密钥”按钮以获取密钥 .
最后,上述过程会将以下内容添加到您的
web.config
中,您需要确保将其复制到您的每个站点中 .