更新复合属性时SCIM用户PUT方法的输出

时间:2015-05-25 03:39:28

标签: provisioning user-management scim

我在mu用户商店中有一个具有以下属性的用户。

{
  "id": "bfae138c-9f57-4ff1-ab63-599f2034371f",
  "schemas":[
    "urn:scim:schemas:core:1.0"
  ],
  "name":{
    "formatted": "Ms. Barbara J Jensen III",
    "familyName": "Jensen",
    "givenName": "Barbara"
  },
  "userName": "bjensen123",
  "externalId": "bjensen",
  "meta":{
    "lastModified": "2015-05-25T08:59:28",
    "location": "https://localhost:9443/wso2/scim/Users/bfae138c-9f57-4ff1-ab63-599f2034371f",
    "created": "2015-05-25T08:59:28"
  }
}

我使用以下方法体向此资源发送了一个put请求。

{
  "schemas":["urn:scim:schemas:core:1.0"],
  "userName":"bjensen123",
  "name":{
    "formatted":"Ms. Bb",
  }
}

我的结果资源的名称属性应该是什么?

"name":{
   "formatted":"Ms. Bb",
}

"name":{
     "formatted": "Ms. Bb",
    "familyName": "Jensen",
    "givenName": "Barbara"
  }

1 个答案:

答案 0 :(得分:1)

PUT请求将作为完整更新处理,而PATCH只会更新指定的属性,并且对于实现者来说是可选的(根据SCIM 1.1规范)。 PUT的目的是请求者首先执行用户的读取(GET),更改所需的属性,并提供全面的更新,以包括那些实际上没有更改的属性(密码是一个例外)。任何未在PUT请求中使用值指定的属性都会被吹走。因此,根据您的示例,PUT响应将返回:

“name”:{“格式化”:“Bb女士”}

如果您不想丢失familyName和givenName,则必须重新指定它们(以及您不想要吹走的任何其他属性)。这是规范定义: http://www.simplecloud.info/specs/draft-scim-api-01.html