我正在寻找最佳安全实践来创建从移动应用程序到 Azure AD B2C 的新用户。在移动应用程序和 Azure AD (B2C) 之间,有一个 .netcore WEB API,它将使用服务帐户运行。此服务必须获得授权才能在 Azure AD B2C 中创建新用户。
今天,我已经能够实施以下措施:
- 移动应用程序连接到 WEB API
- WEB API 使用 oAuth 2.0 客户端凭据流(应用程序 ID + 客户端密码)向 Azure AD 请求访问令牌。
- Azure AD B2C 将令牌返回给 WEB API
- WEB API 使用 Microsoft Graph API 来创建用户。
对于第 4 步,我的 Azure 应用程序注册了 API 权限“User.ReadWrite.All”,因为 .net 核心 WEB API 必须能够创建新用户。
所有这一切仅通过使用 nuget 包 Azure.Identity 和 Microsoft.Graph。
我遵循了这种方法:
我有几个疑问,如下:
- 端点“注册”(我的 .netcore WEB API)不需要任何身份验证。当然,它应该是开放的,以便新用户可以注册。我们将实施 2FA,我们可以考虑对每个客户端应用一些限制。总而言之,一个设备应该只能创建一个用户。
- 在上面的 Microsoft 文档中,它写道“如果可能,我们建议您使用受支持的 Microsoft 身份验证库 (MSAL) 来获取令牌并调用安全的 Web API。还请查看使用 MSAL 的示例应用程序。”。我不认为这是可能的,因为我不想在注册端点上有一个授权属性。再次,它必须是开放的。
- 在[协议图][1]中,提到了建议让用户登录应用程序。同样,在新用户注册导致创建新用户帐户之前,我不能这样做。
任何关于我上面的三个陈述和我的整体方法是正确的并且不会导致糟糕的安全设计的建议/确认将不胜感激。
此致,
尼古拉斯