首页 文章

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

提问于
浏览
8

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

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

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

Set-AzureKeyVaultAccessPolicy

授予 Service Principal 帐户权限时出现以下错误:

“找不到Active Directory对象'clientId ' in tenant ' tenantId '. Please make sure that the user of application service principal you are authorizing is registered in the current subscription' s Azure Active目录 . ”

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

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

2 回答

  • 2

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

    听起来您已将应用程序创建在与您在其中创建密钥保管库的Azure订阅关联的目录的不同目录中 .

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

  • 3

    您可以在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 App的属性页面上找到它)

    2)如果您未使用门户创建AD应用程序,但是已从Powershell Azure Resource Manager脚本创建它,则尚未为您的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找到讨论的问题 .

相关问题