通过 Microsoft Graph API 补丁方法更新应用程序注册 Approles 始终返回无法读取 JSON 请求负载

问题描述 投票:0回答:1

在应用程序注册时,我想通过首先禁用活动角色然后删除它们来删除应用程序角色。 我检查了开发人员工具执行的命令,并提出以下请求:

$graphApiUrl = 'https://graph.microsoft.com/v1.0/applications'+'/'+$apiAppReg.appId
$body = '{"appRoles":[{"description":"Applications can read","displayName":"Reader","id":"xxxxxxx-xxxx-xxxx-xxxx-xxxxxx","isEnabled":false,"value":"Read","allowedMemberTypes":["Application"]}]}
'

az rest --method PATCH --url $graphApiUrl --headers 'Content-Type=application/json' --body '$body'

我在所有订单中都尝试过此操作,但似乎这会导致错误。

顺便说一句。 boby 是从 azure 网站的请求中复制的

azure azure-web-app-service powershell-2.0 azure-cli
1个回答
0
投票

在我这边复制后,我可以使用PowerShell来实现您的要求。要禁用应用程序角色,我为应用程序中的每个应用程序角色设置了

IsEnabled=$false

下面是适合我禁用应用程序角色的脚本。

$app = Get-AzureADApplication -Filter "appId eq '$appId'"
$AppRoles = $app.AppRoles
for($I=0;$I -lt $AppRoles.Count;$I++)
{
    $app.AppRoles[$I].IsEnabled=$false
    Set-AzureADApplication -ObjectId $app.ObjectId -AppRoles $AppRoles
}

enter image description here

要从我使用过的应用程序中删除应用程序角色

$AppRoles.Remove($AppRoles[$I])
。以下是用于从我的应用程序中删除应用程序角色的完整代码。

for($I=0;$I -lt $AppRoles.Count;$I++)
{
    $AppRoles.Remove($AppRoles[$I])
    Set-AzureADApplication -ObjectId $app.ObjectId -AppRoles $AppRoles
}

以下是完整的工作代码

Connect-AzureAD

$AppId = "<APPLICATION_ID>"
$ObjectId = "<OBJECT_ID>"

$app = Get-AzureADApplication -Filter "appId eq '$appId'"
$AppRoles = $app.AppRoles
for($I=0;$I -lt $AppRoles.Count;$I++)
{
    $app.AppRoles[$I].IsEnabled=$false
    Set-AzureADApplication -ObjectId $app.ObjectId -AppRoles $AppRoles
}

for($I=0;$I -lt $AppRoles.Count;$I++)
{
    $AppRoles.Remove($AppRoles[$I])
    Set-AzureADApplication -ObjectId $app.ObjectId -AppRoles $AppRoles
}
© www.soinside.com 2019 - 2024. All rights reserved.