azure - 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>"}}]
解决方案
#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
此外,您可以查看我的测试示例和门户中的屏幕截图,确保服务主体自己添加/删除密码。
推荐阅读
- php - 如何以最小的复杂性在 php 中实现冒泡排序?
- wordpress - WooCommerce 信用卡费用
- python - 使用 scipy 积分方程
- app-store-connect - iTunes Connect - 无法创建 iTunes Connect 记录
- c# - 如何使用 /Date() 序列化包含 DateTime 的复杂对象
- python - 如何在 Python shell 脚本中使用 pipenv?
- javascript - Node.js - 以太坊合约无法调用函数
- google-analytics - 如何在 Google Analytics 上跟踪电话号码?
- docker - 无法在 docker swarm 覆盖网络中更改容器的静态 IP
- python - Python:为 ConvNet 创建具有多个通道的时间序列