【发布时间】:2020-01-03 14:46:57
【问题描述】:
我正在探索使用 ASP.NET Core 3.1 后端在 Angular 应用中实现用户身份验证和授权的选项,该后端将部署到 Azure AppService。
只有被选中的受邀用户才能使用应用程序。每个人都无法访问“创建帐户”页面。这些用户的子集有可能是我们公司的用户,因此利用他们的 Active Directory 身份并允许 SSO 会很棒。应用程序将是多租户的。选定的租户/用户可能需要多因素身份验证(例如,基于角色)。我们不希望允许使用 FB、Google 等第三方身份提供商登录。
根据我对我有 2 (4?) 个选项的探索。
- ASP.NET Core 标识 - 简单、内置、众所周知。但可能不允许我实施 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 asp.net-core azure-active-directory asp.net-identity