现有用户配置期间的内部配置错误

Internal Provisioning error during existing user provisioning

我们正在开发 SCIM API,在 OneLogin 和我们的应用程序之间的集成测试期间,我们总是 运行 出现错误,可以通过以下步骤重现该错误:

  1. 使用 xy@email.com(SCIM 用户名)在您的应用程序中创建一个用户
  2. 使用相同的电子邮件地址在 OneLogin 中创建一个用户
  3. 将此用户添加到您的应用程序
  4. OneLogin 应该认识到该用户已经在使用该 SCIM 应用程序,因此不需要进一步的配置操作。但是,我们得到了 "Internal Provisioning Error"

我可以验证我们的 API 已被调用,这里是与此流程相关的 2 个 SCIM 网络请求:

GET https://appurl/svc/scim/v1/Users?filter=userName+eq+"xy%40email.com"

{
  "schemas": [
    "urn:scim:schemas:core:1.0"
  ],
  "totalResults": 1,
  "itemsPerPage": 1,
  "startIndex": 1,
  "Resources": [
    {
      "userName": "xy@email.com",
      "emails": [
        {
          "primary": true,
          "value": "xy@email.com"
        }
      ],
      "id": "94724df5-2338-45a3-8b96-0f68afd273d4",
      "schemas": [
        "urn:scim:schemas:core:1.0"
      ]
    }
  ]
}

GET https://appurl/svc/scim/v1/Users/94724df5-2338-45a3-8b96-0f68afd273d4

{
  "userName": "xy@email.com",
  "emails": [
    {
      "primary": true,
      "value": "xy@email.com"
    }
  ],
  "id": "94724df5-2338-45a3-8b96-0f68afd273d4",
  "schemas": [
    "urn:scim:schemas:core:1.0"
  ]
}

第二次 GET 请求后 OneLogin returns with "Internal Provisioning Error"

回复有问题吗?

谢谢, 彼得

我发现了错误。在 OneLogin 中,名字和姓氏是必需的,但在我们的应用程序中它们不是。当 OneLogin 获取我们的用户时,它无法解析结果,因为我们没有 return 名字和姓氏。

我们实际上确实需要这些值来实现我们产品中的某些功能:

具体来说,我们具有获取目标应用程序中所有用户的功能,然后我们允许应用程序管理员手动映射应用程序中的哪个用户与 OneLogin 目录中的哪个用户匹配(同步用户功能和关联用户)

这用于以下情况(无论出于何种原因)用户的 SCIM 用户名与 OneLogin 中的值不匹配,他们需要手动与您应用中的特定用户记录相关联。

部分 UI 执行此操作会在应用程序中显示用户的名字/姓氏,以帮助识别他们。

我们的解决方案是不再需要这些字段(发生这种情况时不会出现错误),但我们将开始仅通过他们的 SCIM 用户名和 "UNKOWN" 显示这些用户 [=25] =].

不是最好的用户体验,但希望您能看到我们在这种情况下可以做到的最好。