多租户应用程序中的ASP.NET会话和Cookie

多租户应用程序中的ASP.NET会话和Cookie,asp.net,asp.net-mvc,multi-tenant,Asp.net,Asp.net Mvc,Multi Tenant,我正在开发一个多租户ASP.NET MVC应用程序 到目前为止,我们一直在使用HttpContext为请求存储一些对象(技术上是由租户进行分区的) 但是,我们需要使用TempData(使用会话)并设置身份验证cookie 我们的规格: 租户可以有多个URL(tenant1.myapp.com或mycustomdomain.com) 租户不应共享身份验证cookie 理想情况下,租户的身份验证cookie应该由他们的任意一个URL共享 会话域感知吗?似乎是这样 我可以在身份验证cookie上设

我正在开发一个多租户ASP.NET MVC应用程序

到目前为止,我们一直在使用HttpContext为请求存储一些对象(技术上是由租户进行分区的)

但是,我们需要使用TempData(使用会话)并设置身份验证cookie

我们的规格:

  • 租户可以有多个URL(tenant1.myapp.com或mycustomdomain.com)
  • 租户不应共享身份验证cookie
  • 理想情况下,租户的身份验证cookie应该由他们的任意一个URL共享
会话域感知吗?似乎是这样

我可以在身份验证cookie上设置多个域吗

如有任何其他可能让我感到困惑的建议,我将不胜感激。实际上,我只需要了解每个租户需要划分哪些部分(到目前为止,我已经为每个租户划分了文件系统、数据库和缓存)

谢谢

会话域感知吗

默认情况下,会话由Cookie跟踪,并且由于Cookie仅限于同一域,因此会话不仅具有域感知能力,而且具有应用程序感知能力,这意味着如果您在同一域上有两个应用程序,它们将不会共享会话

我可以在身份验证cookie上设置多个域吗

不可以。不能在域之间共享Cookie。但与会话相反,您可以在同一域上的多个应用程序之间共享它们(通过在web.config中的
标记中将
属性设置为顶级域)。这就是允许在同一域上的应用程序之间实现单点登录的原因。如果您希望在不同域上的应用程序之间实现单点登录,则需要

会话域感知吗

默认情况下,会话由Cookie跟踪,并且由于Cookie仅限于同一域,因此会话不仅具有域感知能力,而且具有应用程序感知能力,这意味着如果您在同一域上有两个应用程序,它们将不会共享会话

我可以在身份验证cookie上设置多个域吗

不可以。不能在域之间共享Cookie。但与会话相反,您可以在同一域上的多个应用程序之间共享它们(通过在web.config中的
标记中将
属性设置为顶级域)。这就是允许在同一域上的应用程序之间实现单点登录的原因。如果您想在不同域上的应用程序之间实现单点登录,您需要。

您可能需要研究一下


但我不相信你可以在开箱即用的情况下跨域共享会话。您可能需要添加自定义会话同步,其中每个域会话通过自定义算法链接到同一用户/租户等。

您可能需要查看



但我不相信你可以在开箱即用的情况下跨域共享会话。您可能需要添加自定义会话同步,其中每个域会话通过自定义算法链接到同一用户/租户等。

感谢您的澄清。因此,这似乎是默认安全的。很可能我的租户每个人都只有一个url。谢谢你的澄清。因此,这似乎是默认安全的。很可能我的租户每个人都只有一个url。
<configuration>
    <system.web>
        <sessionState 
            mode="StateServer" 
            partitionResolverType=
                "IndustryStrengthSessionState.PartitionResolver" />
    </system.web>
</configuration>