我正在使用 aspnetcore v2.1(最新的开发分支)来创建一个多租户应用程序,其中每个租户都针对他们自己的 Azure B2C AD 租户进行身份验证。选择这种方法是为了让每个租户的电子邮件/密码选择和社交登录关联都是唯一的。
我想根据当前租户身份(我根据主机名确定)应用正确的 ClientId 和权限,而不是在 Startup.ConfigureServices 中应用静态 ClientId。根据之前对 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 足迹的租户提供实现多租户的不同方法的建议)