如何使 FedAuth cookie 对于解决方案中的每个应用程序都是唯一的?
How to make FedAuth cookies unique for each application in on solution?
我正在使用 System.IdentityModel 和基于声明的身份验证来验证我的 MVC 应用程序。
在检查用户名和密码后的登录页面中,我使用这种方法创建 FedAuth Cookie:
var token = new SessionSecurityToken(MyCustomClaimsPrincipal.GetInstance(username, roles,claims) );
token.IsPersistent=rememberMe;
var sam = FederatedAuthentication.SessionAuthenticationModule;
sam.IsReferenceMode = true;
sam.WriteSessionTokenToCookie(token);
一切正常,但问题是当我在将在不同域上发布的同一解决方案中的其他 2 个应用程序中使用完全相同的方法时;但是在本地主机 FedAuth Cookies 相互冲突。当我登录一个应用程序时,cookies 在其他应用程序中无效,我应该重新登录。
事实上,我只能同时使用一个应用程序。
我认为它只是在本地主机上,发布后在不同的域上没有问题。但我更喜欢在一个解决方案中使 FedAuth cookie 对于每个应用程序都是唯一的。可能吗?如何?
也许在 SessionSequrityToken 的构造函数中使用 Context 或 ContextId 是可能的。但我没有找到任何相关的例子。我不知道发送什么作为 context 和 contextId 参数?
sessionAuthenticationModule 有一个名为 cookiehandler (https://msdn.microsoft.com/en-us/library/microsoft.identitymodel.web.sessionauthenticationmodule_members.aspx) 的成员,该 cookiehandler 的名称是 cookie 的名称。
https://msdn.microsoft.com/en-us/library/microsoft.identitymodel.web.cookiehandler_members.aspx
您也可以在配置中执行您正在执行的操作
<system.identityModel.services>
<联邦配置>
<cookieHandler requireSsl="false" name="yourcookienamehere"/>
...</p>
<p></system.identityModel.services>
希望对您有所帮助
我正在使用 System.IdentityModel 和基于声明的身份验证来验证我的 MVC 应用程序。 在检查用户名和密码后的登录页面中,我使用这种方法创建 FedAuth Cookie:
var token = new SessionSecurityToken(MyCustomClaimsPrincipal.GetInstance(username, roles,claims) );
token.IsPersistent=rememberMe;
var sam = FederatedAuthentication.SessionAuthenticationModule;
sam.IsReferenceMode = true;
sam.WriteSessionTokenToCookie(token);
一切正常,但问题是当我在将在不同域上发布的同一解决方案中的其他 2 个应用程序中使用完全相同的方法时;但是在本地主机 FedAuth Cookies 相互冲突。当我登录一个应用程序时,cookies 在其他应用程序中无效,我应该重新登录。
事实上,我只能同时使用一个应用程序。 我认为它只是在本地主机上,发布后在不同的域上没有问题。但我更喜欢在一个解决方案中使 FedAuth cookie 对于每个应用程序都是唯一的。可能吗?如何? 也许在 SessionSequrityToken 的构造函数中使用 Context 或 ContextId 是可能的。但我没有找到任何相关的例子。我不知道发送什么作为 context 和 contextId 参数?
sessionAuthenticationModule 有一个名为 cookiehandler (https://msdn.microsoft.com/en-us/library/microsoft.identitymodel.web.sessionauthenticationmodule_members.aspx) 的成员,该 cookiehandler 的名称是 cookie 的名称。 https://msdn.microsoft.com/en-us/library/microsoft.identitymodel.web.cookiehandler_members.aspx
您也可以在配置中执行您正在执行的操作
<system.identityModel.services>
<联邦配置>
<cookieHandler requireSsl="false" name="yourcookienamehere"/>
...</p>
<p></system.identityModel.services>
希望对您有所帮助