【发布时间】:2016-06-24 11:08:51
【问题描述】:
我正在尝试一个解决方案,其中一个 Web 应用程序服务于多个域,对于每个域我想配置自己的提供程序,使用外部提供程序的应用程序 ID 和密码,我想要 cookie 域 和 providers 信息 根据当前域名从数据库中读取,例如:
switch (currentDomainName)
{
case "web1.com": load cookie domain and providers information for web1.com ...
case "web2.com": load cookie domain and providers information for web2.com ...
...
}
我面临两个主要问题:
- 我在 Owin 启动 ConfigureAuth() 中没有可用的 HttpContext,并且我不确定如何确定在启动早期使用哪个域名...
- 我了解每个 Web 应用程序只运行一次 Startup,例如,在第一次访问 web1.com 后,一旦 web1.com 已设置 ConfigureAuth() 将不会再次为 web2.com 运行
我想知道我是否可以覆盖一些 Owin 方法并使其成为非静态的......或者也许找到一种方法以不同的方式实现它(但我仍然喜欢使用 Owin)
我从哪里开始?
【问题讨论】:
-
提供程序不是为此而构建的。您正在考虑多少个域?如果只是几个,那么您可以使用 MapWhen 之类的东西为每个域分叉管道,并为每个域提供不同的中间件。诀窍是事后重新合并管道。
-
大约 10 个域,但将来可能更多,您知道我应该研究的任何其他中间件吗?
-
不,这不是一个已经开发太多的领域。在某些时候,在您的应用程序中管理太复杂了,您将其外包给 Azure AAD B2C azure.microsoft.com/en-us/services/active-directory-b2c 之类的服务
标签: cookies owin multi-tenant owin-middleware