oro*_*edd 40 c# authentication forms-authentication asp.net-identity
对于表单身份验证,我在web.config中使用了它(请注意域属性):
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" name=".ASPXAUTH" protection="Validation" path="/" domain=".myserver.dev" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
如何在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"
});
Run Code Online (Sandbox Code Playgroud)
Hao*_*ung 34
在Startup.Auth.cs中,您将看到如下内容:
对于RC:
app.UseSignInCookies();
Run Code Online (Sandbox Code Playgroud)
这已在RTM中删除,并替换为cookie auth的显式配置:
app.UseCookieAuthentication(new CookieAuthenticationOptions {
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login")
});
Run Code Online (Sandbox Code Playgroud)
CookieAuthenticationOptions类有一个CookieDomain属性,我相信你正在寻找它.
小智 14
这让我疯狂,直到我得知Identity 2.0仍然依赖于机器密钥来加密身份验证cookie.因此,如果您需要在不同子域上使用同一应用程序的两个实例,则需要为每个应用程序设置相同的机器密钥.
总结如下:
在每个应用程序的Web配置中设置相同的机器密钥
<system.web>
<machineKey decryptionKey="EEEB09D446CCFE71B82631D37DEDCC917B8CB01EC315" validationKey="60E4EFE8DD26C4BF8CDAEDCA10716C85820839A207C56C8140DB7E32BE04630AD631EDF25C748D0F539918283C5858AF456DBE208320CFFA69244B4E589" />
</system.web>
Run Code Online (Sandbox Code Playgroud)这个答案让我设置了值: ASP.NET Identity 2是否使用machinekey来密码密码?
chr*_*obo 13
您需要在web.config中为所有网站/应用程序设置相同的machineKey.
所有网站必须至少具有此配置.
http://msdn.microsoft.com/en-us/library/w8h3skw9(v=vs.85).aspx
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" name=".ASPXAUTH" protection="Validation" path="/" domain=".myserver.dev" />
</authentication>
<machineKey validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" validation="SHA1" decryption="Auto"/>
</system.web>
Run Code Online (Sandbox Code Playgroud)
这是一个例子
JDa*_*ips 12
在Startup.Auth.cs文件中,CookieDomain
使用您的域添加参数:
var cookieAuthenticationOptions = new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
CookieDomain = ".mydomain.com"
};
Run Code Online (Sandbox Code Playgroud)
然后,对于所有网站,您需要设置唯一的机器密钥.生成新的最简单方法是使用IIS:
在您的网站上找到"机器密钥"选项:
单击"生成密钥"按钮以获取密钥.
最后,上述过程将向您添加以下内容web.config
,您需要确保将其复制到您的每个站点中.
<machineKey
validationKey="DAD9E2B0F9..."
decryptionKey="ADD1C39C02..."
validation="SHA1"
decryption="AES"
/>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24838 次 |
最近记录: |