我尝试使用以下代码从Powershell内部使用Azure Graph API(使用azure cli / az rest命令)设置signInAudience:
$body='{"signInAudience":"AzureADAndMicrosoftAccounts"}'
echo $body
Test-Json -Json $body
az rest --method PATCH --uri https://graph.microsoft.com/v1.0/applications/$application_object_id --body $body --headers "Content-Type=application/json"
(根据其余文档here)应更新Azure AD应用程序中的signInAudience。
这是结果:
{"signInAudience":"AzureADAndMicrosoftAccounts"}
True
ValidationError: Bad Request({
"error": {
"code": "BadRequest",
"message": "Unable to read JSON request payload. Please ensure Content-Type header is set and payload is of valid JSON format.",
"innerError": {
"date": "2020-10-13T10:48:48",
"request-id": "f29fd020-33aa-4cda-b98e-130d1434cd85",
"client-request-id": "f29fd020-33aa-4cda-b98e-130d1434cd85"
}
}
})
为什么这不起作用? 可以使用此API设置其他更改,以下调用可以完成示例工作。
az rest --method PATCH --uri https://graph.microsoft.com/v1.0/applications/${azuread_application.main_application.object_id} --body '{"api":{"requestedAccessTokenVersion": 2}}' --headers "Content-Type=application/json"
答案 0 :(得分:1)
根据我的测试,如果我们将整个字符串括在单引号中,则Azure CLI命令az rest
将不会标识双引号。它只是将身体标识为{signInAudience:AzureADAndMicrosoftAccounts}
。因此,我建议您使用双引号将整个字符串括起来。
此外,当您要允许具有个人Microsoft帐户或任何组织的Azure AD租户中的工作或学校帐户的用户访问应用程序时,signInAudience
应设置为AzureADandPersonalMicrosoftAccount
。有关更多详细信息,请参阅here。
例如
$body="{'signInAudience':'AzureADandPersonalMicrosoftAccount'}"
az rest --method PATCH --uri https://graph.microsoft.com/v1.0/applications/<object id> --body $body --headers "Content-Type=application/json"