使用 azure graph API 设置 signInAudience -- 无效 JSON
Setting signInAudience using azure graph API -- Invalid JSON
我尝试使用以下代码从 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"
根据我的测试,如果我们用单引号将整个字符串括起来,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"
我尝试使用以下代码从 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"
根据我的测试,如果我们用单引号将整个字符串括起来,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"