我正在使用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足迹的租户实现多租户的不同方法的建议)
答案 0 :(得分:1)
尝试使用IOptionsMonitor,我们改变了IOptionsSnapshot在2.0中相当晚的工作方式,并将auth over切换为使用监视器。