使用Azure KeyVault,无法在Azure Active Directory租户中找到对象

时间:2015-07-07 10:33:51

标签: azure azure-active-directory service-principal

使用Azure KeyVault我按照本指南设置了ResourceGroup,KeyVault和Key:

https://azure.microsoft.com/en-gb/documentation/articles/key-vault-get-started/

我在Active Directory中设置了应用程序客户端。但是当我尝试使用时:

Set-AzureKeyVaultAccessPolicy

授予服务主体帐户的权限时出现以下错误:

“无法在租户' tenantId '中找到Active Directory对象' clientId '。请确保您授权的应用服务主体的用户已在当前订阅的Azure Active目录。“

clientId是正确的,因为它是从门户网站中的应用程序配置页面复制的。租户ID是当前订阅的租户ID ..但不是活动目录。

问题似乎是Active Directory的租户ID与我正在使用的订阅的租户ID不同。如何更改Azure门户中Active Directory的租户ID以匹配订阅租户ID?

2 个答案:

答案 0 :(得分:3)

租户ID是指Azure AD目录的唯一标识符。每个Azure订阅都与目录(或"租户")相关联。

听起来您已经在与您创建密钥保管库的Azure订阅相关联的目录的不同目录中创建了该应用程序。

注册应用程序时,当您转到" Active Directory"在Azure管理门户的一部分中,请确保选择与您订阅的目录(创建Azure密钥库的订阅)相关联的目录。

答案 1 :(得分:2)

您可以在https://docs.microsoft.com/en-us/azure/key-vault/key-vault-get-started#a-idauthorizeaauthorize-the-application-to-use-the-key-or-secret

上找到的文档存在两个问题

1)-ServicePrincipalName参数不应该(如链接中的示例所示)是客户端ID(Guid),而是AD应用标识符Uri(您可以在AD应用的属性页面上找到它)

2)如果您未使用门户创建AD应用程序,但是已从Powershell Azure Resource Manager脚本创建AD应用程序,则尚未为您的AD应用程序创建服务主体。在运行Set-AzureRmKeyVaultAccessPolicy之前,必须使用New-AzureRmADServicePrincipal cmdlet执行此操作。

总的来说,你应该

$app =  New-AzureRmADApplication -DisplayName "Test" -HomePage "http://myapp.contoso.com" -IdentifierUris "http://myapp.contoso.com" -Password "password" 

New-AzureRmADServicePrincipal -ApplicationId $app.ApplicationId

Set-AzureRmKeyVaultAccessPolicy -VaultName "vaultname" -ServicePrincipalName "http://myapp.contoso.com" -PermissionsToSecrets Get 

您还可以在https://social.msdn.microsoft.com/Forums/azure/en-US/ae8d2782-ecf7-4d35-9859-d4455e65a668/setazurermkeyvaultaccesspolicy-cannot-find-the-active-directory-object-in-tenant-?forum=AzureKeyVault

上找到对此进行重新讨论的讨论