如何在不同的目录中使用 Azure Key Vault 和 Azure Active Directory B2C?

How to use Azure Key Vault & Azure Active Directory B2C in different directories?

我正在尝试按照 these instructions 设置 Azure Key Vault,我正在 "Register an application with Azure Active Directory"。

在说明中,有这样一条准则:

Important: To complete the tutorial, your account, the vault, and the application that you will register in this step must all be in the same Azure directory.

关于我的配置的三个重要信息:

  1. 由于我们的团队使用的是 Azure Active Directory B2C 而不是 Azure AD,因此 AAD B2C 实例位于不同的目录中,如下面屏幕截图的右上角所示。
  2. 我们的网络应用程序(名称 MyApp)已在 Directory2 内注册到 AAD B2C,如下面屏幕截图中间的圆圈所示。
  3. 然而,实际的Web应用程序资源在Directory1中,如下面的截图所示

我该如何前进?我应该将 KeyVault 和 MyApp 移动到 Directory2 还是将 AAD B2C 实例移动到 Directory1?

很遗憾,您不能将 Azure KeyVault 用于 Azure AD B2C 应用程序。

为什么?

1.For 你的场景,一般来说,我们可以使用 Azure AD 和 Azure AD B2C 保护 Azure Web App。但是,对于 Azure AD B2C 应用程序,密钥只能由 Azure 生成。您不能为 AAD 应用程序使用自定义密钥。

2.AAD B2C 应用程序没有服务主体。如果您想授权应用程序使用密钥或秘密,您可以使用以下 powershell 脚本:

Set-AzureRmKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed -PermissionsToKeys decrypt,sign

但是,此 powershell cmdelet 需要指定一个 Serviceprincipal Name。 AAD B2C 没有服务主体。因此,您不能将此 powershell 用于 AAD B2C 应用程序。

因此,即使您可以让 Key Vault 和 AAD B2C 应用程序在同一个租户中,但您仍然不能将 Key Vault 用于 AAD B2C。

我的建议:

虽然您可以集成 AAD B2C 来为您的 Azure Web 应用程序做 authentication/authorization,但此功能是为 AAD 而设计的,而不是 Azure AD B2C。但是,您仍然可以将 AAD B2C 与您的 Web 应用程序集成,但您不能将 keyvault 用于您的 B2C 应用程序。我很抱歉这次诉讼,但 B2C 是针对开发环境的,它不像 AAD。

如果您介意使用 Azure 生成的密钥并需要此功能,您可以 post 在 this Feedback Forum 中提出您的想法,Azure 团队将对其进行审查。

希望对您有所帮助!