我建议宁愿使用新的Azure AD v2 cmdlet:https://docs.microsoft.com/en-us/powershell/azuread/v2/azureactivedirectory。
它们比ARM更通用,可以更容易地指定按键,回复URL等内容。
例如,加回复的网址:
Set-AzureADApplication -ObjectId 1048db5f-f5ff-419b-8103-1ce26f15db31 -ReplyUrls @("https://localhost:8080","https://localhost:8081")
要添加所需的权限,你必须找出几件事情。定义权限的服务主体,您将需要它的appId。 (我从租户那里找到Microsoft Graph API校长)然后,您需要找到您想要的appRole或oauth2Permission。你将需要它的ID。
然后添加一个委托权限:
$req = New-Object -TypeName "Microsoft.Open.AzureAD.Model.RequiredResourceAccess"
$acc1 = New-Object -TypeName "Microsoft.Open.AzureAD.Model.ResourceAccess" -ArgumentList "e1fe6dd8-ba31-4d61-89e7-88639da4683d","Scope"
$acc2 = New-Object -TypeName "Microsoft.Open.AzureAD.Model.ResourceAccess" -ArgumentList "798ee544-9d2d-430c-a058-570e29e34338","Role"
$req.ResourceAccess = $acc1,$acc2
$req.ResourceAppId = "00000003-0000-0000-c000-000000000000"
Set-AzureADApplication -ObjectId 1048db5f-f5ff-419b-8103-1ce26f15db31 -RequiredResourceAccess $req
的ResourceAppId是微软图形API的服务主体的APPID。这种情况下的ResourceAccess对象包含两个要求。首先保存我想要的oauth2Permission的id,并指定它是委托权限。第二个包含app权限,id是appRole的对象ID。
范围=委派权限
角色=申请许可
要找到你所需要的服务主体,可以运行:
Get-AzureADServicePrincipal
ObjectId AppId DisplayName
-------- ----- -----------
f004dde9-b40f-4259-91be-e257009a444a 00000003-0000-0000-c000-000000000000 Microsoft Graph
然后得到本金和列出委托权限:
$msGraph = Get-AzureADServicePrincipal -ObjectId f004dde9-b40f-4259-91be-e257009a444a
$msGraph.Oauth2Permissions | select Id,AdminConsentDisplayName,Value
Id AdminConsentDisplayName Value
-- ----------------------- -----
e1fe6dd8-ba31-4d61-89e7-88639da4683d Sign in and read user profile User.Read
或者如果您需要应用程序权限:
$msGraph.AppRoles | select Id,DisplayName,Value
Id DisplayName Value
-- ----------- -----
798ee544-9d2d-430c-a058-570e29e34338 Read calendars in all mailboxes Calendars.Read
Id是重要的。
对于脚本,好处是MS服务的应用程序ID始终相同。所有租户的权限ID也相同。因此,例如:
- 微软图形API
- 的AppId:00000003-0000-0000-c000-000000000000
- Azure的AD图形API
- 的AppId:00000002-0000- 0000-c000-000000000000
感谢您的回复。您能否提供有关您所说的行的更多信息:*“那么您需要找到您想要的appRole或oauth2Permissions”*? – jdave
看我的编辑。我添加了一些我用来获得Microsoft Graph API权限的示例命令。 – juunas
@junnas - 啊谢谢你!如果我设置了全新的应用程序,并且没有定义权限的服务原则,该怎么办?如果我想为应用程序创建新的权限 - 是否有不同的流程? – jdave