Dynamic OpenIdConnectOptions for multi-tenancy in Asp.net Co



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

我想根据当前租户标识(我根据主机名确定(应用正确的 ClientId 和权限,而不是在 Startup.ConfigureServices 中应用的静态 ClientId。 根据之前对 2.0-* 代码的检查,我一直在使用 IOptionsSnapshot 来允许我应用正确的选项,如下所示。

In 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 占用空间的租户提供实现多租户的不同方法的建议(

尝试使用IOptionsMonitor 相反,我们在 2.0 中更改了 IOptionsSnapshot 的工作方式,并将身份验证切换为使用监视器。

选项快照的范围现在已确定

最新更新