从另一个Azure ActiveDirectory租户中的应用程序访问Azure KeyVault

时间:2017-03-17 00:09:52

标签: azure azure-active-directory azure-keyvault

我有一个Azure订阅,其中包含我的Web应用程序的所有资源。我创建了另一个ActiveDirectory租户,在租户中定义了一个AD应用程序,并将其设置为我的AppService的身份验证提供程序。现在,我想在订阅中创建一个KeyVault资源,并让我的AD应用程序访问KeyVault。

Azure KeyVault文档说运行以下PS命令:

Set-AzureRmKeyVaultAccessPolicy -VaultName <KVName> -ObjectId <ClientId> -PermissionsToKeys get

但是,这会返回以下错误:

Cannot find the Active Directory object '<ClientId>' in tenant '<MyDefaultTenantId>'

问题似乎是我的KV与AD应用程序不在同一个AD租户中,但Set-AzureRmKeyVaultAccessPolicy命令似乎没有TenatId参数。

有什么方法可以达到我的目的吗? 我是否必须将AD应用程序移动到默认的AD租户?

3 个答案:

答案 0 :(得分:4)

没有。密钥保险库只接受来自其所在租户的身份。

答案 1 :(得分:1)

您当然可以使您的应用程序multi-tenant同意将应用程序同意到包含Key保险库的订阅中的Azure AD目录,然后将该应用程序添加为具有门户中Key保险库访问权限的主体。 / p>

然后,您的应用程序可以代表该目录中的用户或使用客户端凭据代表自己访问Key保险库。

答案 2 :(得分:0)

我有相同的情况和要求(永远不会回到这8小时:-)但您可以通过调用特定URL轻松获得此同意并继续授予应用程序标识在密钥库中的必要权限

简而言之......

GET https://login.microsoftonline.com/{tenant}/adminconsent?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&state=12345
&redirect_uri=http://localhost/myapp/permissions

始终在私人浏览器窗口中运行,以避免在浏览器日常生活时间内纠缠不同的身份。

在这里阅读更多内容: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-scopes#using-the-admin-consent-endpoint