【发布时间】:2019-12-26 23:43:24
【问题描述】:
我正在构建一个基于主机名选择租户的多租户 asp.net 核心应用程序。所以tenant1.example.com、tenant2.example.com、...等等。
另外,我在 asp.net 核心 services.AddAuthentication(...).AddGoogle(...) 中使用默认的 Google 身份验证处理程序使用 Google 身份验证
效果很好,只是 Google 不支持通配符回调 URL。因此,每次添加新租户时,我都必须使用新的回调 URL 配置我的 Google 应用程序以反映新主机:tenant1.example.com/signin-google、tenant2.example.com、...等等。
asp.net 核心 Google 处理程序允许您指定回调路径,但不能指定 URL。我计划覆盖处理程序以使回调 URL 始终转到托管在裸域 example.com/redirect-google 上的重定向器 url(我会小心打开重定向),并将该重定向到适当的子域以完成身份验证。
以前有人做过吗?有人发现这种方法有问题吗?
【问题讨论】:
-
似乎可行;你打算在反向代理级别重写它吗? (Nginx?)我担心从tenant1到tenant2的重定向攻击;但也许我想多了。顺便说一句,Stack Overflow 使用 stackauth——一个集中的站点,在那里进行身份验证,然后他们将你重定向回来——就好像它是他们自己的 OAuth 提供者一样。
-
我们经常使用与 OAuth 流交互的完全独立的登录应用程序,然后在协商后使用内部令牌重定向到实际应用程序。我不能说我已经将它与多租户应用程序一起使用,但这种模式对我们来说非常有效,可以让我们的应用程序与角色/权限存储实现分离。
-
我喜欢单独应用程序的想法,但这也增加了托管和部署的复杂性。现在,我只需要担心一个应用程序。我想最终我将不得不添加这个其他应用程序,也许使用 IdentityServer4 联合网关。
标签: asp.net-core oauth asp.net-identity google-oauth