如何以编程方式创建Azure KeyVault密钥时,如何修复"操作'设置'不允许"错误?

SAG*_*SDX 5 azure azure-keyvault

我正在尝试使用Microsoft以编程方式创建Azure KeyVault密钥.Azure.KeyVault.KeyVaultClient.出于我的目的,我将使用证书作为Azure AD应用程序进行身份验证令牌身份验证.Azure AD应用程序已在其清单中包含证书信息.

我的代码创建Azure KeyVault,为Azure AD应用程序的对象ID提供密码和密钥的"所有"权限.我验证使用Powershell检索KeyVault并查看访问策略时发生了这种情况.

当我尝试使用KeyVaultClient.SetSecretAsync()在此KeyVault上创建一个秘密时,我得到一个异常,说"不允许操作'设置'." 状态代码为"Forbidden".

在KeyVault上设置的权限之外,我是否需要确保其他任何权限(如Azure AD应用程序)?

SAG*_*SDX 8

问题是Access Policy不需要Azure AD应用程序的对象ID.它实际上需要Azure AD应用程序的服务主体的对象ID .

由于最近在portal.azure.com上添加了"App Registrations",我们可以轻松获取应用程序的对象ID.但是,Azure AD应用程序的服务主体的对象ID无法通过UI(我可以找到).你可以通过Powershell获得它:

Get-AzureRmADServicePrincipal -ServicePrincipalName <app client ID>
Run Code Online (Sandbox Code Playgroud)