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

时间:2017-08-07 23:28:38

标签: azure-active-directory azure-ad-b2c asp.net-core-identity asp.net-core-security

我正在使用aspnetcore v2.1(最新的dev分支机构)来创建一个多租户应用程序,其中每个租户都会对自己的Azure B2C AD租户进行身份验证。选择此方法是为了使电子邮件/密码选择和社交登录关联是唯一的每个租户。

而不是在Startup.ConfigureServices中应用静态ClientId,我想根据当前租户标识(我根据主机名确定)应用正确的ClientId和Authority。基于之前对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 个答案:

答案 0 :(得分:1)

尝试使用IOptionsMonitor,我们改变了IOptionsSnapshot在2.0中相当晚的工作方式,并将auth over切换为使用监视器。

OptionsSnapshot is now scoped