gpt4 book ai didi

azure - 是否可以使用 PowerShell 中的服务主体将角色和范围分配给新创建的应用程序?

转载 作者:行者123 更新时间:2023-12-02 07:23:48 25 4
gpt4 key购买 nike

我编写了一个模块来在 Azure AD 中创建应用程序注册并分配角色和范围。当使用我自己的凭据作为全局管理员连接到 Azure AD 时,它可以工作,但是当使用带有证书指纹的服务主体时,它会返回以下内容

PS C:\WINDOWS\system32> New-AzureADServiceAppRoleAssignment -ObjectId "GUID" -PrincipalId "GUID"
-ResourceId "GUID" -Id "GUID"

New-AzureADServiceAppRoleAssignment : Error occurred while executing NewServicePrincipalAppRoleAssignment
Code: Request_BadRequest
Message: One or more properties are invalid.
RequestId: 8ab86d25-3963-4d67-a112-44285bc74c82
DateTimeStamp: Tue, 17 Dec 2019 13:04:10 GMT
HttpStatusCode: BadRequest
HttpStatusDescription: Bad Request
HttpResponseStatus: Completed
At line:1 char:1
+ New-AzureADServiceAppRoleAssignment -ObjectId "GUID...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [New-AzureADServiceAppRoleAssignment], ApiException
+ FullyQualifiedErrorId : Microsoft.Open.AzureAD16.Client.ApiException,Microsoft.Open.AzureAD16.PowerShell.NewServicePrincipalAppRoleAssignment
at <ScriptBlock>, <No file>: line 1

最佳答案

是的,这是可能的,并且为了创建应用角色分配,您在问题中显示的内容应该有效。

您可能收到此(不是特别有用)错误消息的原因之一是服务主体是否已分配此应用程序角色。

特别是在测试时,首先删除同一应用角色的现有应用角色分配非常重要,然后等待一段时间(以确保更改已复制),然后再尝试执行此操作。

<小时/>

Below is an important note applicable when reading app role assignments using Azure AD PowerShell and providing your own access token.

cmdlet Get-AzureADServiceAppRoleAssignmentGet-AzureADServiceAppRoleAssignedTo 调用 Azure AD Graph API。 Azure AD Graph 有一个特殊的怪癖,即根据用于获取访问 token 的应用程序 ID 是否为 Microsoft 拥有的应用程序注册(例如,Azure AD PowerShell 的 Microsoft 拥有的应用程序注册,在 期间默认使用),它会表现出不同的行为。 >Connect-AzureAD),或通过常规客户拥有的应用注册获得的访问 token (例如,使用 -AadAccessToken 提供您自己的访问 token 时)。

使用 Connect-AzureAD 连接时(不传递访问 token ):

  • Get-AzureADServiceAppRoleAssignment -ObjectId "{id}" 返回应用角色分配,其中 {id} 是分配的服务主体的对象 ID(即应用程序角色分配)已被授予仅限应用程序的权限)。
  • Get-AzureADServiceAppRoleAssignedTo -ObjectID "{id}" 返回所有应用角色分配,其中 {id} 是资源服务主体的对象 ID(即应用程序角色分配)公开相关应用程序角色)。

但是,当使用 Connect-AzureAD -AadAccessToken "{token}"... 连接时(其中 {token} 是 Azure AD Graph API 的访问 token ,通过客户拥有的应用程序注册获得),行为相反:

  • Get-AzureADServiceAppRoleAssignment -ObjectId "{id}" 返回所有应用角色分配,其中 {id} 是资源服务主体的对象 ID(即应用程序角色分配)公开相关应用程序角色)。
  • Get-AzureADServiceAppRoleAssignedTo -ObjectID "{id}" 返回应用角色分配,其中 {id} 是分配的服务主体的对象 ID(即应用程序角色分配)已被授予仅限应用程序的权限)。

更令人困惑的是,在添加或删除应用角色分配时不需要考虑这个问题。可以使用 -ObjectId 调用 New-AzureADServiceAppRoleAssignmentRemove-AzureADServiceAppRoleAssignment 来标识分配的服务主体或资源应用的服务主体和命令将按预期执行。

最后一点:此问题已在 Microsoft Graph API beta 中的等效 API 中得到解决。当 Microsoft Graph-based PowerShell module基于 Microsoft Graph 的模块发布后,您可能希望迁移到该模块,该模块将具有一致的行为。

关于azure - 是否可以使用 PowerShell 中的服务主体将角色和范围分配给新创建的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59375223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com