如何在 Azure AD B2C 中实现基于成员的访问?

Posted

技术标签:

【中文标题】如何在 Azure AD B2C 中实现基于成员的访问?【英文标题】:How to implement membership based access in Azure AD B2C? 【发布时间】:2019-08-29 10:09:20 【问题描述】:

我有一个 Azure AD B2C 租户,并且我已经在多个应用程序中实现了登录/注册流程,并且所有这些都是托管的。

在这些应用程序中,一些高级应用程序受到限制,这意味着从我们的门户购买了一些会员资格的人只能访问它,但问题是,在我们的其他应用程序中注册的人(通过 AD B2C)也可以访问高级应用程序。

B2C 租户允许所有用户访问所有应用程序。如何限制一些没有我们会员资格的用户访问高级应用程序?

注意:

在 Azure AD 中,企业应用程序选项用于基于角色的授权,但我在 AD B2C 中看不到等效选项。

【问题讨论】:

【参考方案1】:

使用内置用户流程,您可能必须在应用程序本身中进行检查。使用自定义策略,您可以对登录流程实施验证技术配置文件。但在我看来,仅仅为此而制定自定义政策是不值得的。

【讨论】:

我同意你的第一点。假设我们有 100 多个免费应用程序和 50 多个高级应用程序(并且还在继续),我们无法为所有高级应用程序实现此逻辑。在注册用户本身时,是否有类似的 AD B2C 方式? (无论是否拥有会员资格) 哎呀,那会很多。据我所知,使用标准的内置用户流程,您无法限制用户对应用程序的访问。我将评估在所有高级应用中实施许可证检查与实施动态进行许可证检查的自定义策略/登录流程的成本。【参考方案2】:

正如 juaans 所提到的,内置用户流中没有直接的方法。但是有一种方法可以使它更容易。如果成员资格存储为自定义属性,则应用程序会在令牌的声明中获取成员资格。一旦你将它放入令牌中,它就可以在应用程序的授权层中进行非常简单的检查。我假设应用程序肯定会实施一些授权。

【讨论】:

以上是关于如何在 Azure AD B2C 中实现基于成员的访问?的主要内容,如果未能解决你的问题,请参考以下文章

为 Azure AD B2C 自定义策略调用 New-CpimCertificate 时出现问题

Azure AD B2C 单页应用角色

无头认证Azure AD b2c

Azure AD B2C 是不是允许组层次结构?

如何在 Azure AD B2C 中管理用户流之间的单个帐户/会话

如何使用 Azure AD B2C 保护 Blazor Wasm 应用访问的 Azure 函数?