使用Azure图形API设置signInAudience-无效的JSON

时间:2020-10-13 12:34:35

标签: azure-active-directory azure-ad-b2c azure-ad-graph-api azure-cli

我尝试使用以下代码从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"

1 个答案:

答案 0 :(得分:1)

根据我的测试,如果我们将整个字符串括在单引号中,则Azure CLI命令az rest将不会标识双引号。它只是将身体标识为{signInAudience:AzureADAndMicrosoftAccounts}。因此,我建议您使用双引号将整个字符串括起来。 enter image description here

此外,当您要允许具有个人Microsoft帐户或任何组织的Azure AD租户中的工作或学校帐户的用户访问应用程序时,signInAudience应设置为AzureADandPersonalMicrosoftAccount。有关更多详细信息,请参阅hereenter image description 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"