我们正在尝试在联合域上创建用户,而不发送JSON字段onPremisesImmutableId
。正如Create User页面上所述,在这种情况下,此字段将成为强制性字段。
当我们发出这样的请求时,HTTP响应状态代码奇怪地是400而在响应有效负载中没有正确的消息。以下是一个示例。
是否有可能获得有关请求失败原因的准确消息?我们要问的原因是,在使这个域名联邦之前,同样的请求工作得非常好,但现在已经不行了。花了我们几个小时才弄清楚出了什么问题,文档最终给出了一个线索。
Request:
Invoke-WebRequest -Method POST https://graph.microsoft.com/v1.0/users -Headers @{"Authorization"="Bearer <access_token>"} -Body '{"accountEnabled":true,"displayName": "displayName-value","mailNickname": "mailNickname-value", "userPrincipalName": "blah-blah","passwordProfile":{"password": "bleh"}}' -ContentType 'application/json'
===============
Response:
status: 400 Bad Request
Date: Thu, 06 Apr 2017 19:35:32 GMT
x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"South India","Slice":"SliceA","ScaleUnit":"000","Host":"AGSFE_IN_1","ADSiteName":"MAA"}}
Duration: 148.322
client-request-id: 516c451a-1052-4918-9671-2ebfa8d2f795
Content-Type: application/json
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: ETag, Location, Preference-Applied, Content-Range, request-id, client-request-id
Cache-Control: private
Transfer-Encoding: chunked
request-id: 516c451a-1052-4918-9671-2ebfa8d2f795
{
"error": {
"code": "Request_BadRequest",
"message": "One or more properties contains invalid values.",
"innerError": {
"request-id": "516c451a-1052-4918-9671-2ebfa8d2f795",
"date": "2017-04-06T19:35:32"
}
}
}
答案 0 :(得分:2)
您在联合域中创建用户的请求必须包含onPremisesImmutableId。这就是您的请求开始失败的原因(在将域转换为联合之后)。尽管此属性表明它是不可变的,但它意味着这应该是本地用户的不可变id的值 - 这样您就可以将本地用户对象绑定到云用户对象。如果未正确设置此属性,则联合登录将不起作用。此属性可以更新(虽然出于显而易见的原因不推荐),如果用户已被移动到非联合云专用域,则可以取消该属性。
如果您尝试在未设置onPremisesImmutableId的情况下在联合域中创建用户(或者甚至将用户的userPrincipalName更改为在联合域下而不设置onPremisesImmutableId),则400错误是合适的。该错误确实表明某些内容未正确设置 - 但是错误消息是我们做的事情*肯定需要努力改进,并且可以做得更精确。
希望这有帮助,