VMware Cloud Director 10.4.1 开始,可以使用 VMware Cloud Director API 将单个用户从一个身份提供程序 (IDP) 重新映射到另一个身份提供程序 (IDP)。

重要说明: 请勿将用户迁移到系统组织 LDAP 配置或从系统组织 LDAP 配置中迁移用户。从系统组织 LDAP 配置迁移的用户无法登录到除执行迁移的组织以外的任何组织。有关详细信息,请参见 VMware Cloud Director 10.4.2 发行说明中的“已知问题”一节。
注: 从版本 10.4.1 开始, VMware Cloud Director 开始弃用本地用户。 VMware Cloud Director 在本地用户弃用时继续完全支持使用这些本地用户。请参见 VMware Cloud Director 10.4.1 发行说明

有关在版本 10.4.2 中使用 VMware Cloud Director UI 在身份提供程序之间批量重新映射用户的信息,请参见 在 VMware Cloud Director 10.4.2 及更高版本中,在身份提供程序之间重新映射用户

前提条件

  • 确认您的角色包括组/用户:管理权限。
  • 确认组织配置了要在其间重新映射的身份提供程序类型。

过程

  1. /cloudapi/1.0.0/users 发出 GET 请求。

    VMware Cloud Director 返回组织内的用户列表。

  2. 找到要重新映射的用户,然后检索用户信息。
    GET /cloudapi/1.0.0/users/{user_id}
  3. /cloudapi/1.0.0/users/{user_id} 发出 PUT 请求。

    要重新映射用户,必须更改 providerType 字段以标识新的 IDP。VMware Cloud Director 支持 SAMLLDAPOAUTHLOCAL 值。此外,为了匹配用户重新映射到的 IDP 中的用户名,可以修改用户名。用户通过新的登录流程登录时,如果 VMware Cloud Director 要继续将用户的资产与用户关联,则用户的 ID 必须保持不变。

    重要说明:

    如果要重新映射到提供程序类型 LDAPVMware Cloud Director 会在提交操作之前通过 LDAP 服务器验证用户名。如果 VMware Cloud Director 由于任何原因(例如,与 LDAP 服务器的连接中断)而未完成此步骤,则重新映射将失败。

    如果要通过指定提供程序类型 LOCAL 将用户重新映射为本地用户,与创建用户的过程类似,必须提供密码。

  4. 验证 VMware Cloud Director 是否返回 OK 响应,在响应正文中指定了新重新映射的提供程序类型。

示例:

要查找要重新映射的用户,请发出以下请求。

请求:
GET /cloudapi/1.0.0/users?pageSize=10 HTTP/1.1
Host: 127.0.0.1:8443
Accept: application/json;version=37.1
示例响应:
{
  "resultTotal": 2,
  "pageCount": 1,
  "page": 1,
  "pageSize": 10,
  "associations": null,
  "values": [
    ...,
    {
      "username": "testuser",
      "fullName": "",
      "description": null,
      "id": "urn:vcloud:user:2b038199-0063-4c13-9bba-a3b58d775785",
      "roleEntityRefs": [
        {
          "name": "vApp Author",
          "id": "urn:vcloud:role:85f69506-52a5-3e20-869a-ea18d667e19e"
        }
      ],
      "orgEntityRef": {
        "name": "testorg",
        "id": "urn:vcloud:org:806f0d87-c8b9-47f5-bfbe-3dc73a4c0d14"
      },
      "password": "******",
      "email": "",
      "nameInSource": "testuser",
      "enabled": true,
      "isGroupRole": false,
      "providerType": "LOCAL"
    }
  ]
}

要将 testuserLOCAL 重新映射到 LDAP,请发出 PUT 请求。

请求:
PUT /cloudapi/1.0.0/users/urn:vcloud:user:2b038199-0063-4c13-9bba-a3b58d775785 HTTP/1.1
Host: 127.0.0.1:8443
Accept: application/json;version=37.1
Content-Type: application/json;version=37.1

Body: {
  "username": "testuser",
  "fullName": "",
  "description": null,
  "id": "urn:vcloud:user:2b038199-0063-4c13-9bba-a3b58d775785",
  "roleEntityRefs": [
    {
      "name": "vApp Author",
      "id": "urn:vcloud:role:85f69506-52a5-3e20-869a-ea18d667e19e"
    }
  ],
  "orgEntityRef": {
    "name": "testorg",
    "id": "urn:vcloud:org:806f0d87-c8b9-47f5-bfbe-3dc73a4c0d14"
  },
  "password": "******",
  "email": "",
  "nameInSource": "testuser",
  "enabled": true,
  "isGroupRole": false,
  "providerType": "LDAP"
}
示例响应:
{
  "username": "testuser",
  "fullName": "",
  "description": null,
  "id": "urn:vcloud:user:2b038199-0063-4c13-9bba-a3b58d775785",
  "roleEntityRefs": [
    {
      "name": "vApp Author",
      "id": "urn:vcloud:role:85f69506-52a5-3e20-869a-ea18d667e19e"
    }
  ],
  "orgEntityRef": {
    "name": "testorg",
    "id": "urn:vcloud:org:806f0d87-c8b9-47f5-bfbe-3dc73a4c0d14"
  },
  "password": null,
  "email": "",
  "nameInSource": "\\63\\36\\62\\35\\30\\66\\35\\63\\2D\\61\\62\\30\\35\\2D\\34\\37\\64\\33\\2D\\62\\61\\64\\34\\2D\\39\\32\\64\\35\\32\\37\\30\\36\\62\\39\\39\\33",
  "enabled": true,
  "isGroupRole": false,
  "providerType": "LDAP"
}