用于Asp.net Core 2.1中多租户的动态OpenIdConnectOptions- *

问题描述:

为了创建多租户应用程序,我正在使用aspnetcore v2.1(最新开发分支机构),其中每个租户都针对自己的Azure B2C AD租户进行身份验证。此选择是为了让电子邮件/密码选择和社交登录协会是唯一的每位租户。用于Asp.net Core 2.1中多租户的动态OpenIdConnectOptions- *

而是在Startup.ConfigureServices应用于静态客户端Id的,我想申请基于当前的租户身份正确的客户端Id和管理局(我确定基于主机名)。根据之前对2.0- *代码的检查,我一直在使用IOptionsSnapshot来允许我应用正确的选项,如下所示。

在Startup.ConfigureServices:

services.AddSingleton<IOptionsSnapshot<OpenIdConnectOptions>, OpenIdConnectOptionsSnapshot>(); 
services.AddAuthentication().AddCookie().AddOpenIdConnect(); 

在Startup.Configure:

app.UseAuthentication(); 

随着的实现:

public class OpenIdConnectOptionsSnapshot : IOptionsSnapshot<OpenIdConnectOptions> 

不过,现在我发现我的OpenIdConnectOptionsSnapshot没有更长时间被实例化或引用。

在AspNetCore Security 2.1.0- *下应用动态每租户ClientId,Authority等的正确方法是什么?

(我愿意“你这样做是完全错误”的不同方式来实现多租户,有没有预先存在的AzureAD足迹租户和建议)

+1

作为一个方面说明,我建议投票于Azure的AD B2C一流的多租户支持:https://feedback.azure.com/forums/169401-azure-active-directory/建议/ 9849063-aadb2c-how-to-multi-tenant-applications- – Saca

+0

完成 - 感谢指针 –

尝试使用IOptionsMonitor相反,我们改变IOptionsSnapshot如何在2.0中工作得相当晚,并将auth切换为使用显示器。

OptionsSnapshot is now scoped