为什么当我通过 Powershell 将 Api 权限上传到 AzureAd 时,我只获得了 ID?

Why when I upload an Api permission via Powershell to AzureAd I get only the Id?

我正在尝试为我在 Azure 中的应用程序注册上传一些 api 权限,但我不明白为什么某些流程有效而其他流程无效。

$svcGraph = Get-AzureADServicePrincipal -All $true | ? { $_.DisplayName -eq "Microsoft Graph" }

$Graph = New-Object -TypeName "Microsoft.Open.AzureAD.Model.RequiredResourceAccess"
$Graph.ResourceAppId = $svcGraph.AppId

$delPermission1 = New-Object -TypeName "Microsoft.Open.AzureAD.Model.ResourceAccess" -ArgumentList "df021288-bdef-4463-88db-98f22de89214","Scope"

$delPermission2 = New-Object -TypeName "Microsoft.Open.AzureAD.Model.ResourceAccess" -ArgumentList "e1fe6dd8-ba31-4d61-89e7-88639da4683d","Scope"

$Graph.ResourceAccess = $delPermission1, $delPermission2

Set-AzureADApplication -ObjectId $MyAppObjectId -RequiredResourceAccess $Graph

User.read (delPermission2) 有效,但 User.Read.All (delPermission1) 无效,我不明白为什么。

我尝试了多重权限,但只有 User.read 有效,这里是 ID 和值:

741f803b-c850-494e-b5df-cde7c675a1ca User.ReadWrite.All

83cded22-8297-4ff6-a7fa-e97e9545a259 Presence.ReadWrite.All

810c84a8-4a9e-49e6-bf7d-12d183f40d01 Mail.Read

据我所知,您使用的 ID 用于 User.Read.All、User.ReadWrite.All、Presence.ReadWrite.All Mail.Read 权限 不正确.

要找到这些委派权限的正确 ID,请使用以下 cmdlet:

 $svcGraph.Oauth2Permissions | FT ID, Value, UserConsentDisplayName

据此,记下所有这些权限的正确 ID:

User.Read.All - a154be20-db9c-4678-8ab7-66f6cc099a59

User.ReadWrite.All - 204e0828-b5ca-4ad8-b9f3-f32a958e7cc4

Presence.Read.All - 9c7a330d-35b3-4aa1-963d-cb2b9f927841

Presence.ReadWrite - 8d3c54a7-cf58-4773-bf81-c0cd6ad522bb

Mail.Read - 570282fd-fa5c-430d-a7fd-fc8dc98a9dca

您为 User.Read 使用的 ID 是正确的。这就是它起作用的原因。

User.Read - e1fe6dd8-ba31-4d61-89e7-88639da4683d

确保您具有管理员角色并通过修改值使用正确的 ID。

更多参考,如果有帮助,请在下面参考找到。

How to assign Permissions to Azure AD App by using PowerShell? – Beyond the Horizon… (rajanieshkaushikk.com)