管理使用者

有了 Cloud Directory,您就可以使用可加強安全性和自助服務的預先建立功能,在可擴充的登錄系統中管理使用者。

Cloud Directory 使用者與 App ID 使用者不同。 使用者可以使用您設定的不同身分提供者選項註冊您的應用程式,也可以將他們加入您的目錄。 下列區段中提及的使用者是與 Cloud Directory 作為身分提供者相關聯的使用者。

檢視使用者資訊

您可以透過使用 API 或儀表板,以 JSON 物件的形式查看所有 Cloud Directory 使用者的已知資訊。

在主控台中檢視使用者資訊

您可以使用 App ID 儀表板,來檢視應用程式使用者的詳細資料。

  1. 移至 App ID 實例的 Cloud Directory > Users(雲目錄 > 使用者 )索引標籤。

  2. 在表格中尋找,或是使用電子郵件位址進行搜尋,以尋找您要查看其資訊的使用者。 搜尋詞彙必須是確切的詞彙。

  3. 在使用者列的溢位功能表中,按一下檢視使用者詳細資料。 即會開啟包含使用者資訊的頁面。 請參閱下表,以查看您可以看見的資訊。

    您可以透過查看App ID儀表板來查看有關使用者的詳細信息
    詳細資料 說明
    使用者 ID 使用者 ID 視您所配置的使用者註冊類型而定。 例如,如果您有電子郵件和密碼流程,識別符就是使用者的電子郵件。 如果您使用使用者名稱和密碼流程,則識別碼就是註冊時給予的使用者名稱。
    電子郵件 附加至使用者的主要電子郵件位址。
    名字和姓氏 您的使用者在註冊過程中提供的名字和姓氏。
    前次登入 使用者上次登入應用程式的時間戳記。 附註:如果您是透過儀表板新增使用者,則在使用者自己登入應用程式之前,登入會是空白的。 當登入發生時,他們也會成為 App ID 使用者。
    ID App ID 指派給使用者的 ID。 在控制台中,它不會顯示,但您可以複製該值並貼到文字編輯器中,以查看該值。
    預先定義屬性 預先定義的屬性是根據 SCIM,關於使用者的已知事情。
    自訂屬性 自訂屬性是新增至使用者設定檔的其他資訊,或是在使用者與您的應用程式互動時瞭解到關於使用者的其他資訊。
    摘要 所有的屬性都會匯整為一個設定檔,讓您對 Cloud Directory 使用者有完整的概觀。 如需相關資訊,請參閱使用者設定檔

使用 API 檢視使用者資訊

您可以使用 App ID API,來檢視應用程式使用者的詳細資料。

  1. 從服務實例中取得您的承租戶 ID。

  2. 使用識別查詢(例如電子郵件位址)搜尋您的 App ID 使用者,以尋找使用者 ID。

    curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/Users?query=<identifyingSearchQuery>" \
    -H "accept: application/json" \
    -H "authorization: Bearer <token>"
    

    範例:

    curl -X GET https://us-south.appid.cloud.ibm.com/management/v4/e19a2778-3262-4986-8875-8khjafsdkhjsdafkjh/cloud_directory/Users?query=user@domain.com
    -H "accept: application/json"
    -H "authorization: Bearer eyJraWQiOiIyMDE3MTEyOSIsImFsZ...."
    
  3. 透過使用您在先前步驟中所取得的 ID,對 cloud_directory/users 端點發出 GET 要求,以查看其完整使用者設定檔。

    curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/Users/<userID>" \
    -H "accept: application/json" \
    -H "authorization: Bearer <token>"
    

    回應範例:

    {
       "sub": "c155c0ff-337a-46d3-a22a-a8f2cca08995",
       "name": "Test User",
       "email": "testuser@test.com",
       "identities": [
       {
          "provider": "cloud_directory",
          "id": "f1772fcc-ff70-4d88-81a0-07dd7a3d988f",
          "idpUserInfo": {
             "displayName": "Test User",
             "active": true,
             "mfaContext": {},
             "emails": [
             {
                "value": "testuser@test.com",
                "primary": true
             }
             ],
             "meta": {
             "lastLogin": "2019-05-20T16:33:20.699Z",
             "created": "2019-05-20T16:25:13.019Z",
             "location": "/v1/6b8ab644-1d4a-4b3e-bcd9-777ba8430a51/Users/f1772fcc-ff70-4d88-81a0-07dd7a3d988f",
             "lastModified": "2019-05-20T16:33:20.707Z",
             "resourceType": "User"
             },
             "schemas": [
             "urn:ietf:params:scim:schemas:core:2.0:User"
             ],
             "name": {
             "givenName": "Test",
             "familyName": "User",
             "formatted": "Test User"
             },
             "id": "f1772fcc-ff70-4d88-81a0-07dd7a3d988f",
             "status": "CONFIRMED",
             "idpType": "cloud_directory"
          }
       }
       ]
    }
    

    若要查看 App ID 支援的完整使用者資料集,請參閱 SCIM 核心綱目

新增使用者

當使用者註冊您的應用程式時,系統會將他們新增為使用者。 為了進行測試,您可以透過 App ID 儀表板或使用 API 來新增使用者。

當使用者註冊應用程式時,他們會透過自助工作流程來進行,工作流程會自動觸發電子郵件,例如歡迎或驗證要求。 身為管理者的您將使用者新增至應用程式時,不會起始自助工作流程,這表示使用者不會收到來自您應用程式的任何電子郵件。 如果您希望您的使用者仍能收到新增的通知,您可以透過 App ID 管理 API 來觸發訊息流。

如果您停用自助登入或新增一個代表他們的使用者,則在新增使用者時,他們不會收到歡迎或驗證電子郵件。

在主控台中新增使用者

  1. 移至 App ID 儀表板的 Cloud Directory > 使用者標籤。

  2. 按一下新增使用者。 即會開啟表單。

  3. 輸入名字姓氏電子郵件密碼。 請確定您嘗試要登錄的電子郵件尚未由另一位使用者使用。 若要確定您已正確鍵入密碼,請在重新輸入密碼欄位中輸入該密碼來加以確認。

  4. 按一下儲存。 即建立 Cloud Directory 使用者。

使用 API 新增使用者

  1. 從應用程式或服務認證中取得承租戶 ID。

  2. 取得 IBM Cloud IAM 記號。

    curl -X GET "https://iam.cloud.ibm.com/oidc/token" \
    -H "accept: application/x-www-form-urlencoded"
    
  3. 執行下列指令以同時建立新使用者和設定檔。

    curl -X POST "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/sign_up?shouldCreateProfile=true&language=en" \
    -H "accept: application/json" \
    -H "Content-Type: application/json" \
    -H "authorization: Bearer <token>" \
    -d "{ \"active\": true, \"emails\": [ { \"value\": \"<user@domain.com>\", \"primary\": true } ], \"userName\": \"<userName>\", \"password\": \"<userPassword>\"}"
    

刪除使用者

如果要從目錄中移除使用者,可以從主控台或使用 API 刪除使用者。

在主控台中刪除單一使用者

  1. 移至 App ID 儀表板的 Cloud Directory > 使用者標籤。

  2. 按一下要刪除的使用者旁邊的核取方塊。 即會開啟勾選框。

  3. 在此勾選框中,按一下刪除。 即會開啟畫面。

  4. 按一下刪除,以確認您瞭解刪除使用者動作無法復原。 如果此動作是錯的,您可以重新將使用者新增至目錄中,但該使用者的任何相關資訊已不再可用。

使用 API 刪除單一使用者

  1. 取得您的承租戶 ID。

  2. 取得 IBM Cloud IAM 記號。

    curl -X GET "https://iam.cloud.ibm.com/oidc/token" \
    -H "accept: application/x-www-form-urlencoded"
    
  3. 透過使用附加至使用者的電子郵件,搜尋目錄以尋找使用者的 ID。

    curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/users?email=<user@domain.com>" \
    -H "accept: application/json"
    
  4. 刪除使用者。

    curl -X DELETE "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/remove/<userID>" \
    -H "accept: application/json" \
    -H "authorization: Bearer <token>"
    

使用 API 刪除多個使用者

您也可以使用大量刪除 API 來大量刪除雲端目錄使用者及其對應的設定檔。

每個要求最多可以刪除 100 個使用者。

  1. 取得您的承租戶 ID。

  2. 取得 IBM Cloud IAM 記號。

    curl -X GET "https://iam.cloud.ibm.com/oidc/token" \
    -H "accept: application/x-www-form-urlencoded"
    
  3. 透過使用使用者 ID 的清單執行下列指令來刪除使用者。

    curl -X POST "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/bulk_remove" \
    -H "accept: application/json" \
    -H "authorization: Bearer <token>"
    -d '{
    "ids": [
      "fed2634a-7a6c-4f6a-855d-8e3c73a5b5cc",
      "9380158c-19c9-4303-9111-a91743f4bad8"
      ]
    }'
    

移轉使用者

有時,您可能需要新增 App ID 的實例。 為了協助遷移至新的實例,您可以使用匯出和匯入 API 來進行次要的遷移。 如果您要遷移相當數量的使用者(16,000 或更多),您可以 匯出所有 使用者,或透過單一 API 請求 匯入所有 使用者,以提高效率。

您必須為 App ID 的兩個實體都指派 Manager IAM 角色

匯出所有使用者

您需要先從服務的原始實例匯出設定檔,然後才能將設定檔匯入至新實例。

如果您要匯出許多使用者 (16,000 個以上),則可以使用 export/all API 端點。

  1. 匯出服務原始實例中的所有使用者。

    curl -X POST 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/export/all' \
       --header 'Content-Type: application/json' \
       --header 'Authorization: Bearer <IAMToken>' \
       --data-raw '{"encryptionSecret" : "<encryptionSecret>",  
    "emailAddress" : "jdoe@example.com"}'
    
  2. 視需要取得要求的狀態。

    curl -X GET 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/export/status?id=<id>' --header 'Accept: application/json' \
       --header 'Content-Type: application/json' \
       --header 'Authorization: Bearer <IAMToken>'
    
  3. 當匯出備妥或要求失敗時,會將電子郵件傳送至提供的電子郵件位址。 若要下載匯出,請使用 export/download API。

    curl -X GET 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/export/download?id=<id>' \
       --header 'Content-Type: application/json' \
       --header 'Authorization: Bearer <IAMToken>'
    

    只有在匯出要求成功時,才會建立匯出檔。 如果要求失敗,為了減少漏洞風險,會刪除所收集的資料。 在 7 天或您在要求內文中指定的天數 (在 1-30 天範圍內) 之後,會自動刪除匯出。 您可以選擇透過將要求傳送至 delete API 來手動刪除匯出。

    匯出/全部請求中需要提供的參數說明
    參數 說明
    encryptionSecret 用來加密及解密使用者雜湊式密碼的自訂字串。 保留您需要的加密密碼,以使用 import/all API。 IBM 不會儲存密鑰,因此如果密鑰遺失,則您無法存取匯出的資料。
    emailAddress 當匯出備妥或要求失敗時,電子郵件傳送至的電子郵件位址。
    expires 您可以設定 (1 ≤ 值 ≤ 30) 的整數,以指定必須刪除匯出的天數。 預設值為 7。
    tenantID 可在您的服務認證中找到服務承租戶 ID。 您可以在 App ID 面板中找到或建立服務憑證。

分批匯出使用者

匯出端點預留給約少於 16,000 位使用者的次要匯出。 若要匯出與特定租戶 ID 相關聯的所有「雲端目錄」使用者,請使用 export/all API 端點。

  1. 從服務的原始實例中匯出使用者。

    curl -X GET 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/export?encryption_secret=mySecret' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer <IAMToken>'
    
    需要在匯出請求中提供的參數說明
    參數 說明
    encryptionSecret 用來加密及解密使用者雜湊式密碼的自訂字串。
    tenantID 可在您的服務認證中找到服務承租戶 ID。 您可以在 App ID 儀表板中找到您的服務認證。

    只會傳回您的「雲端目錄」使用者及其設定檔。 不會傳回其他身分提供者的使用者。

匯入所有使用者

既然您具有已匯出「雲端目錄」使用者的清單,則可以將它們匯入至新實例。 您可以使用匯入全部 API 端點,以單一請求匯入大量使用者(16,000 或更多)。

  1. 匯入您下載的已匯出使用者清單。

    curl -X POST 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/import/all' \
    --header 'Content-Type: multipart/form-data' \
    --header 'Authorization: Bearer <IAMToken>' \
    --form 'file=@<User/desktop/myfolder/user_list.json>' \
    --form 'encryptionSecret=mySecret' \
    --form 'emailAddress=jdoe@example.com'
    
  2. 視需要取得要求的狀態。

    curl -X GET 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/import/status?id=<id>' \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer <IAMToken>'
    
    import/all請求中需要提供的參數說明
    參數 說明
    encryptionSecret 用來加密及解密使用者雜湊式密碼的自訂字串。 加密密鑰是您連接至 export/all API 的相同密鑰。 IBM 不會儲存密鑰,因此如果密鑰遺失,則您無法存取匯出的資料。
    emailAddress 當匯出備妥或要求失敗時,電子郵件傳送至的電子郵件位址。
    tenantID 可在您的服務認證中找到服務承租戶 ID。 您可以在 App ID 面板中找到或建立服務憑證。
    file 來自 export/download 端點的輸出。

分批匯入使用者

您可以使用匯入 API 端點一次匯入幾個使用者。 使用匯入 API 端點,每個要求最多只能新增 50 個使用者。 若要透過單一要求新增所有使用者,請使用 import/all API 端點。

  1. 如果您的使用者已 獲指派角色,請務必在新的 App ID實例中建立角色和範圍。

    角色和範圍的建立必須與前一個實例中具有相同拼字的角色和範圍完全相同。

  2. 使用新的「雲端目錄」ID 匯入使用者。 如果您的應用程式以任何方式參照 Cloud Directory ID,您可以選擇建立自訂屬性,並調整應用程式以直接呼叫屬性而非 ID。

  3. 將使用者匯入服務的新實例。

    curl -X POST 'https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/import?encryption_secret=mySecret'
    --header 'Content-Type: application/json'
    --header 'Accept: application/json'
    --header 'Authorization: Bearer <IAMToken>'
    -d '{"users": [
       {
          "scimUser": {
             "originalId": "3f3f6779-7978-4383-926f-a43aef3b724b",
             "name": {
             "givenName": "John",
             "familyName": "Doe",
             "formatted": "John Doe"
             },
             "displayName": "John Doe",
             "emails": [
             {
                "value": "user@example.com",
                "primary": true
             }
             ],
             "status": "PENDING"
          },
          "displayName": "Jane-Doe",
          "emails": [
             {
             "value": "jdoe@example.com",
             "primary": true
             }
          ],
          "status": "PENDING"
       },
       "passwordHash": "<passwordHashHere>",
       "passwordHashAlg": <passwordHashAlgorithm>,
       "profile": {
          "attributes": {}
       },
       "roles": []
       }
    ]}'
    

次要出口和進口的遷移腳本

App ID 提供您可以透過 CLI 使用的移轉 Script,當您使用匯出或匯入 API 端點時,可協助加速移轉處理程序。 或者,若要讓移轉處理程序更有效率,您可以使用 export/allimport/all API 端點。

  1. 複製 儲存庫
git clone https://github.com/ibm-cloud-security/appid-sample-code-snippets/tree/master/export-import-cloud-directory-users.git
  1. 在終端機中,切換至您將儲存庫複製到其中的資料夾。

  2. 執行下列指令。

    npm install
    
  3. 搭配您的參數,執行下列指令。

    users_export_import 'sourceTenantId' 'destinationTenantId' 'region' 'iamToken'
    
    參數說明
    參數 說明
    sourceTenantId 您計劃從其中匯出使用者之 App ID 實例的承租戶 ID。
    destinationTenantId 您計劃將使用者匯入其中之 App ID 實例的承租戶 ID。
    region 進一步瞭解 可用區域
    IAM token 如需取得 IAM 令牌的協助,請參閱 說明文件

    範例指令:

    users_export_import e00a0366-53c5-4fcf-8fef-ab3e66b2ced8 73321c2b-d35a-497a-9845-15c580fdf58c ng eyJraWQiOiIyMDE3MTAyNS0xNjoyNzoxMCIsImFsZyI6IlJTMjU2In0.eyJpYW1faWQiOiJJQk1pZC0zMTAwMDBUNkZTIiwiaWQiOiJJQk1pZC0zMTAwMDBUNkZTIiwicmVhbG1pZCI6IklCTWlkIiwiaWRlbnRpZmllciI6IjMxMDAwIFQ2RlMiPCJnaXZlbl9uYW1lIjoiUm90ZW0iLCJmYW1pbHlfbmFtZSI6IkJyb3NoIiwibmFtZSI6IlJvdGVtIEJyb3NoIiwiZW1haWwiOiJyb3RlbWJyQGlsLmlibS5jb20iLCJzdWIiOiJyb3RlbWJyQGlsLmlibS5jb20iLCJhY2NvdW50Ijp7ImJzcyI6ImQ3OWM5YTk5NjJkYzc2Y2JkMDZlYTVhNzhjMjY0YzE5In0sImlhdCI6MTUzNrE3Mjg4NCwiZXhwIjoxNTM3MTc2NDg0LCJpc3MiOiJodHRwczovL2lhbS5zdGFnZTEuYmx1ZW1peC5uZXQvaWRlbnRpdHkiLCJncmFudF90eXBlIjoidXJuOmlibTpwYXJhbXM6b2F1dGg6Z3JhbnQtdHlwZTpwYXNzY29kZSIsInNjb3BlIjoiaWJtIG9wZW5pZCIsImNsaWVudF9pZCI6ImJ4IiwiYWNyIjoxLCJhbXIiOlsicHdkIl19.c4vLPzhvvNZLjaLy7znDa37qV4o-yuGmSKmJoQKrEQNZU8IC0NIjxwSo7W9kb0pDi3Yf_03_9ufTTGNfjtltzNWycSXjkNgoL-b9_nU61oHdgn0stY1KmNicqyBWfgUU--4xa904QN_QjRHBaUBeJf3XWEphPIMoF7mZeOxEZLnCMcQXSz9pImCMiP4SNT38cHLiI90Yx01rM7hpteepWULh5MYh-B2V03Gkgxfqvv951HF1LDg6eT4Q9in11laTQKtKuomripUju_4GIIjORVYw9NaAVKIJ9lKrPX0SKPhStsa59qGsC_7Uersms5EY1W1VbZVqOZPJbtp6tVf-Lw