首页 > 解决方案 > Azure 服务主体可以更新自己的密码吗?

问题描述

我需要使用 Azure 服务主体以编程方式:
1. 添加/删除其他服务主体的密码,以及
2. 添加/删除自己的密码

1很容易做到。

但由于以下错误,我似乎无法执行 2。#2可能吗?如何?

graphrbac.PasswordCredentialsUpdateParameters failed:
graphrbac.ApplicationsClient#UpdatePasswordCredentials: Failure responding to request: StatusCode=403 -- Original Error: autorest/azure: Service returned an error. Status=403 Code="Unknown" Message="Unknown service error" 
Details=[{"odata.error":{"code":"Authorization_RequestDenied","date":"2019-06-06T22:19:35","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"<ID>"}}]

标签: azureazure-active-directory

解决方案


#2可能吗?如何?

是的,有可能。

只需将您的服务主体添加到 Application Administrator租户中的目录角色,无需添加其他权限,它会起作用(可能会有一些延迟)。

导航到Azure Active Directory门户中的 -> Roles and administrators-> 单击Application administrator-> Add assignment-> 按您的 AD 应用名称(服务主体名称)搜索 -> 选择它 -> Select

我的测试样本:

我用 powershell 测试它,用其他语言,它也应该可以工作。

添加密码:

Connect-AzureAD -TenantId "<TenantId>" -ApplicationId "<ApplicationId>" -CertificateThumbprint "D0F0B179xxxxx6E41833FDE5947"
New-AzureADApplicationPasswordCredential -ObjectId <ObjectId>

在此处输入图像描述

删除密码(成功时不返回内容):

$password = Get-AzureADApplicationPasswordCredential -ObjectId <ObjectId>
Remove-AzureADApplicationPasswordCredential -ObjectId <ObjectId> -KeyId $password.KeyId

此外,您可以查看我的测试示例和门户中的屏幕截图,确保服务主体自己添加/删除密码。

在此处输入图像描述


推荐阅读