【问题标题】:Can Azure Service Principal Update Its Own Passwords?Azure 服务主体可以更新自己的密码吗?
【发布时间】:2019-06-06 23:02:51
【问题描述】:

我需要使用 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>"}}]

【问题讨论】:

    标签: azure azure-active-directory


    【解决方案1】:

    #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
    

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

    【讨论】:

    • 谢谢。 “应用程序管理员”是我所缺少的。
    • @ShangjianDing 很高兴它有帮助。
    【解决方案2】:

    您似乎正在尝试更新您的服务原则,同时发现了一个错误。

    正如错误所说,您没有此操作的权限。

    错误原因:您的应用程序可能没有足够的权限进行此操作。

    待办事项:

    为此,您必须为您的应用程序分配以下权限。请按照以下步骤操作:

    1. 登录azure portal
    2. 点击azure active directory
    3. 应用注册
    4. 选择您的应用程序
    5. API 权限
    6. 添加权限
    7. 微软图形
    8. 申请权限
    9. Directory 中选择Directory.Read.All
    10. Application 中选择Application.ReadWrite.All
    11. 添加权限
    12. YourTennant 授予管理员同意

    请看下面的截图:

    注意:您还需要在该应用程序上至少拥有Contributor 目录角色。由于Contributor 可以创建和管理所有类型的 Azure 资源,但不能授予其他人访问权限。

    【讨论】:

    • 谢谢。但我已经拥有与之关联的所有权限对象。 “应用程序管理员”角色是我所缺少的,乔伊在上面指出了这一点。
    • 是的,应用程序管理也不错。我还在note 部分指定了这一点。至少需要Contributor Roleapplication administration 比这更高。它也有特权。谢谢
    猜你喜欢
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多