我正在探索在 Angular 应用程序中使用将部署到 Azure 应用服务的 Core 3.1 后端 ASP.NET 实现用户身份验证和授权的选项。
只有选定的受邀用户才能使用应用程序。每个人都无法访问"创建帐户"页面。这些用户的子集有可能是我们公司的用户,因此利用他们的 Active Directory 身份并允许 SSO 会很棒。应用程序将是多租户的。所选租户/用户可能需要多重身份验证(例如,基于角色(。我们不希望允许使用第三方身份提供商(如FB,Google等(登录。
根据我的探索,我有 2 (4?( 个选项。
- ASP.NET 核心身份- 简单、内置、众所周知。但可能不允许我实施 SSO,用户将需要另一个登录/通行证。我不确定它是否支持邀请用户(开箱即用(,还是我需要自己实现。与密码重置相同。它允许我向存储的用户实体 (TenantId( 添加自定义属性,以允许我实现多租户,但我需要部署 SQL Server 数据库并自行管理它。
- Azure AD (B2B, B2C(- 这对我来说是新的。我的理解是,使用 Azure AD Connect,我可以在 AD 和 Azure AD 之间同步用户,这将允许我为我们公司用户实现 SSO。只有选定的 OU 才能同步,并且根据 AD 中的组,可以在我们的应用中为它们分配不同的角色。然后,分配角色是已经在AD中管理这些用户的人员的责任。如果此人被释放并且他们的帐户在AD中删除/锁定,他们将无法访问我们的应用程序。如果他们从特定群组中移除,他们将无法访问我们的应用。可能我们所有的公司用户都已在 Azure AD 中 - 当我使用工作电子邮件登录到 Azure 门户时,我会看到自己和我的同事在其中。当涉及到支持不在我们的AD中的用户时,我测试了我可以添加"来宾用户"。起初,我认为这是我需要Azure AD B2C的东西,但看起来并非如此。那么Azure B2B和B2C有什么用呢?在这种情况下,我不需要管理 SQL 数据库并免费进行用户管理。在AD和Azure 门户网站上。我不知道我是否可以向用户添加自定义属性 (TenantId(。
这些选项中哪一个更好?也许还有其他选择?
Azure AD B2B确实是满足你要求的方法。
当您想向外部用户开放应用程序,同时允许他们使用社交提供程序登录时,需要 B2C。
可以详细了解 Azure AD B2B 和 B2C 之间的差异。