问题描述
如果我们在OKTA SCIM API using PUT中调用不存在的资源的更新会发生什么?
它返回404还是创建一个新用户?
解决方法
我没有Okta的SCIM实现的经验,但是根据SCIM RFC,正确的响应是404。通过PUT或PATCH更新时,您将通过ID值来定位特定的对象(即:scim .app.com / scim / v2 / users / 12345)。如果拥有提供的ID值的对象不存在,则SCIM端点应返回404。
:: EDIT ::上面的答案不正确,因为我对SCIM RFC的解释不正确。正确的响应是400 Bad Request,错误消息为invalidValue,因为在PUT操作中指定的用户ID值不存在,意味着提供的值(例如:/ Users / 123 )与尝试的操作(通过PUT更新现有对象)。 :: END编辑::
RFC的相关部分:https://tools.ietf.org/html/rfc7644#section-3.2(SCIM端点和HTTP方法)调出:
PUT通过将现有属性替换为 指定的一组替换属性(replace)。 放置 不得用于创建新资源。