Asp.net Core 2.1-* 中用于多租户的动态 OpenIdConnectOptions
Dynamic OpenIdConnectOptions for multi-tenancy in Asp.net Core 2.1-*
我正在使用 aspnetcore v2.1(最新的开发分支)来创建一个多租户应用程序,其中每个租户都针对他们自己的 Azure B2C AD 租户进行身份验证。选择此方法是为了 email/password 每个租户的选择和社交登录关联都是唯一的。
我想根据当前租户身份(我根据主机名确定)应用正确的 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、权限等的正确方法是什么?
(我愿意接受 "you're doing it completely wrong" 以及为没有预先存在的 AzureAD 足迹的租户实现多租户的不同方法的建议)
尝试改用 IOptionsMonitor,我们更改了 IOptionsSnapshot 在 2.0 中相当晚的工作方式,并将 auth 切换为使用监视器。
我正在使用 aspnetcore v2.1(最新的开发分支)来创建一个多租户应用程序,其中每个租户都针对他们自己的 Azure B2C AD 租户进行身份验证。选择此方法是为了 email/password 每个租户的选择和社交登录关联都是唯一的。
我想根据当前租户身份(我根据主机名确定)应用正确的 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、权限等的正确方法是什么?
(我愿意接受 "you're doing it completely wrong" 以及为没有预先存在的 AzureAD 足迹的租户实现多租户的不同方法的建议)
尝试改用 IOptionsMonitor,我们更改了 IOptionsSnapshot 在 2.0 中相当晚的工作方式,并将 auth 切换为使用监视器。