Microsoft Graph - 在联合域上创建没有 onPremisesImmutableId 的用户
Microsoft Graph - Create user without onPremisesImmutableId on a Federated Domain
我们正在尝试在联合域上创建用户,但不发送 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"
}
}
}
您在联合域中创建用户的请求必须包含一个onPremisesImmutableId。这就是您的请求开始失败的原因(在将域转换为联合之后)。尽管此 属性 表示它是不可变的,但它的意思是表明这应该是本地用户的不可变 ID 的值 - 这样您就可以将本地用户对象绑定到云用户对象。如果您未正确设置此 属性,联合登录将不起作用。此 属性 可以更新(尽管出于明显的原因不推荐),并且如果用户已移动到非联合云域,则可以取消该域。
如果您尝试在未设置 onPremisesImmutableId 的情况下在联合域中创建用户(或者甚至将用户的 userPrincipalName 更改为在未设置 onPremisesImmutableId 的联合域下),则 400 错误是适当的。该错误确实表明某些设置不正确 - 但是错误消息是我们**确实*需要努力改进的东西,并且可以做得更精确。
希望对您有所帮助,
我们正在尝试在联合域上创建用户,但不发送 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"
}
}
}
您在联合域中创建用户的请求必须包含一个onPremisesImmutableId。这就是您的请求开始失败的原因(在将域转换为联合之后)。尽管此 属性 表示它是不可变的,但它的意思是表明这应该是本地用户的不可变 ID 的值 - 这样您就可以将本地用户对象绑定到云用户对象。如果您未正确设置此 属性,联合登录将不起作用。此 属性 可以更新(尽管出于明显的原因不推荐),并且如果用户已移动到非联合云域,则可以取消该域。
如果您尝试在未设置 onPremisesImmutableId 的情况下在联合域中创建用户(或者甚至将用户的 userPrincipalName 更改为在未设置 onPremisesImmutableId 的联合域下),则 400 错误是适当的。该错误确实表明某些设置不正确 - 但是错误消息是我们**确实*需要努力改进的东西,并且可以做得更精确。
希望对您有所帮助,