【问题标题】:Sharing owin identity cookie with MVC 5?与 MVC 5 共享 owin 身份 cookie?
【发布时间】:2015-01-07 13:52:55
【问题描述】:

我正在使用 MVC 5 中的用户管理执行 SSO 应用程序,但例如我无法在应用程序之间共享 cookie

http://SSO
http://app

IIS 中的不同站点,我认为这类似于跨域,所以在 app2 中,当我在 startup.auth 中有类似的东西时

app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            CookieName = "sharedcookie",
            CookieDomain = "SSO",
            CookieHttpOnly = false,
            
            //CookieDomain = "localhost",
            AuthenticationType = DefaultAuthenticationTypes.ExternalCookie,
            LoginPath = new PathString("/Account/Login"),
            Provider = new CookieAuthenticationProvider
            {
                external login to your account.  
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                    validateInterval: TimeSpan.FromMinutes(30),
                    regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
            }
        });

更新: 感谢 Chris Pratt 回答说没有办法做到这一点,这让我想到了另一个问题 我可以在两者之间共享一个 cookie

name1.domain.com/app1 and 
name2.domain.com/app2

使用 OWIN?

【问题讨论】:

  • 应用程序是否在完全不同的域中,而不仅仅是同一域中的不同子域?如果您正在处理子域,您可以在域上设置 cookie,然后它将与该域的所有子域共享。但是,如果您拥有完全不同的域,则 100% 不可能共享 cookie。时期。 Cookie 是域绑定的。
  • 所以我的单点登录必须在同一个域上,但可以有不同的子域。咳咳!!!
  • 我可以共享一个像 name.domain.com/app1 和 name2.domain.com/app2 这样的 cookie 吗?
  • 是的。但是,您还需要确保所有站点的机器密钥都相同,否则即使站点接收到 cookie,它仍然无法理解它。更多信息在这里:technet.microsoft.com/en-us/library/cc755177%28v=ws.10%29.aspx。可以对多个不同的域进行 SSO,但它要复杂得多
  • 如果 cookie 设置在 *.domain.com 上,那么所有子域都将获得该 cookie(sub1.domain.com、sub2.domain.com 等)。之后的路径不予考虑。然而,就像我说的,仅仅接收 cookie 并不总是足够的。如果 cookie 中有像加密会话 id 这样的东西,那么站点 A 设置的 cookie 对站点 B 来说基本上就是垃圾,除非它们使用相同的加密方案。这就是机器密钥的用武之地。

标签: asp.net-mvc cookies single-sign-on owin shared


【解决方案1】:

今天我在想同样的事情时在代码项目上找到了这篇文章,虽然不是 100% 肯定,但对我来说绝对是可能的。

第 1 部分 - 设计: http://www.codeproject.com/Articles/106439/Single-Sign-On-SSO-for-cross-domain-ASP-NET-applic

第 2 部分 - 实施: http://www.codeproject.com/Articles/114484/Single-Sign-On-SSO-for-cross-domain-ASP-NET-appl

当然,这实际上并不是在域之间共享 cookie,而是使用 SSO 用户管理 Web 服务(我觉得这很好!)

注意:我知道不鼓励仅链接答案,但这些文章很大,欢迎任何想告诉我如何正确执行此操作的人 :)

【讨论】:

    猜你喜欢
    • 2015-06-03
    • 2014-01-02
    • 1970-01-01
    • 2023-04-05
    • 2015-09-07
    • 2018-09-07
    • 2016-05-22
    • 2020-06-06
    • 1970-01-01
    相关资源
    最近更新 更多