預先登錄未來使用者

使用 IBM Cloud® App ID,針對您知道即將需要存取您應用程式的使用者,您可以在其起始登入之前開始建置設定檔。

若要進一步瞭解使用自訂屬性時可能適用的安全考量,請參閱儲存及存取使用者設定檔。

瞭解預先登錄

有時,在開發應用程式時,您就已經知道誰將是應用程式的使用者。 這些使用者稱為「未來使用者」。 在某些使用者開始與應用程式互動之前,您可能就已經提前知道他們需要特定許可權層次或有特定食品喜好設定。 例如,您在一家開發公司工作,聘用新人來擔任團隊負責人。 建議您在該使用者開始使用應用程式之前,就為該使用者指派對應用程式的admin存取權,這樣該使用者第一次登入後,不需要與您進行任何進一步的互動,就可以立即開始工作。 假設此人是素食主義者。 記下這一點作為其設定檔中的自訂屬性,就可以為所有團隊午餐取回此喜好設定,而不需要讓他們提醒您。

依預設,使用者透過應用程式變更自己自訂屬性的功能設為 off。 您可以為使用者提供該功能,但在此之前,請確保您瞭解並考慮到可能會出現的安全問題。

若要為未來使用者指派自訂屬性,您可以使用 GUI 或預先登錄端點。

如何識別使用者?

您可以使用下列其中一項來識別您的使用者:

  • 使用者用於登入應用程式的電子郵件位址。
  • 身分提供者中使用者的唯一 ID(稱為 GUID,如果可用)。 雖然此 ID 一律存在且保證一定是唯一的,但不一定會隨時可用或易於瞭解。 例如,Cloud Directory 使用隨機 16 位元組 GUID。

身分提供者提供何種資訊?

請參閱下表,以查看您可以使用的身分資訊類型。

每個提供者可使用的識別資訊類型
身分提供者 GUID 電子郵件 Sub
雲端目錄 勾號圖示 勾號圖示
Facebook 勾號圖示 勾號圖示
Google 勾號圖示 勾號圖示
SAML 勾號圖示
自訂 勾號圖示

如何處理 Cloud Directory?

為了確保未來使用者的完整性,雲端目錄對預先註冊提出了要求。

  • 您必須使用電子郵件而不是使用者名稱來新增使用者。 如果您還沒有任何使用者,請切換到電子郵件和密碼模式來新增未來使用者。 如果您已有使用者,則必須等待該使用者登入後才可指派自訂屬性。
  • 使用者必須透過驗證來確認其身分。 新增具有特定屬性的未來使用者時,這些屬性僅適用於該使用者。 使用電子郵件登入且登錄為未來使用者的任何使用者都必須先驗證其電子郵件位址,才能獲授權對應用程式的存取權。 若要完成驗證需求,您可以傳送電子郵件讓使用者驗證其位址,或者您代表使用者來手動驗證其位址。 若要容許自我驗證,請在服務儀表板的 Cloud Directory 標籤中將電子郵件驗證設為開啟。 這會將一封電子郵件傳送給使用者,以要求對其初始登錄進行驗證。 若要手動驗證使用者,您必須是管理者。 向云目录 管理 API 提出请求,将有效负载中的 status 字段设置为 CONFIRMED。

如果未來使用者由您所新增,並且在先驗證其電子郵件的情況下登入您的應用程式,則會刪除該使用者的自訂屬性,並從頭開始建立設定檔。

使用自訂身分提供者時,我需要執行任何特殊作業嗎?

當您事先將使用者資訊新增至應用程式時,可以使用鑑別流程所提供的任何唯一 ID。 該識別碼必須與授權請求期間傳送的已簽署 JSON Web 令牌的 sub _完全_匹配。 如果 ID 不符,則不會順利鏈結您要新增的設定檔。

新增未來使用者

現在,您已瞭解此處理程序並考量過安全含意,請嘗試新增一位使用者。

使用者的預先定義屬性在其首次鑑別之前是空的。 雖然這些屬性是空的,但仍會認為使用者已經過完整鑑別。 您可以使用他們的設定檔 ID,就像是使用已登入的使用者一樣。 例如,您可以修改、搜尋或刪除設定檔。

開始之前

開始之前,您必須具有下列資訊:

  • 使用者將登入到的身分提供者。
  • 要新增的使用者的電子郵件或其唯一 ID。
  • 要指派的自訂屬性資訊。

使用 GUI

您可以使用 GUI 來新增未來使用者及其自訂屬性。

對於 Cloud Directory 的使用者名稱和密碼配置,已停用新增未來使用者的功能。

  1. 移至 App ID 儀表板的使用者設定檔標籤。

  2. 按一下未來使用者。 如果您已經有未來使用者,則會看到一個表格,其中列出已新增的使用者。 若要新增其他使用者,請按一下建置設定檔。 如果您還沒有任何使用者,請按一下開始使用。 即會開啟畫面。

  3. 輸入使用者的電子郵件。

  4. 從身分提供者下拉清單中,選取使用者登入時使用的身分提供者。

  5. 在 JSON 物件中輸入資訊來新增自訂屬性,如下列範例所示。

    {
       "food": "Pizza",
       "preference": "Vegetarian",
       "points": "37"
    }
    
  6. 按一下儲存。 即會顯示表格,而且使用者會獲指派 ID。

使用 API

您可以使用 API 來新增未來使用者及其自訂屬性。

  1. 登入 IBM Cloud。

    ibmcloud login
    
  2. 執行下列指令,以尋找 IAM 記號。

    ibmcloud iam oauth-tokens
    
  3. 對 /users 端點發出 POST 要求,而此端點包含使用者的說明以及您要設為 JSON 物件的屬性。

    Header:

    POST <managementUrl>/management/v4/<tenantID>/users
          Host: <managementServerURL>
          Authorization: 'Bearer <IAMToken>'
          Content-Type: application/json
    

    內文:

    {
          "idp": "<identityProvider>",
          "idp-identity": "<userUniqueIdentifier>",
          "profile": {
             "attributes": {
                "mealPreference":"vegeterian"
             }
          }
    }
    
    POST 請求的組成部分
    元件 說明
    idp 使用者向其進行鑑別的身分提供者。 選項包括:saml, cloud_directory, facebook, google, appid_custom。
    idp-identity 身分提供者所提供的唯一 ID。
    profile 包含自訂屬性 JSON 對映的使用者設定檔。

    要求範例:

    $ curl --request POST \
          --url 'https://<managementURI>/users \
          --header 'Authorization: Bearer <IAMToken>' \
          --header 'Content-Type: application/json' \
          --data '{"idp": "saml", "idp-identity": "user@ibm.com", "profile": { "attributes": { "role": "admin",
          "frequent_flyer_points": 1000 }}}'
    
  4. 驗證登錄是否成功。

    • 檢查已建立的使用者設定檔。

      curl --request GET https://us-south.appid.cloud.ibm.com/management/v4/<tenantID>/users/<userProfileId>/profile \
      --header 'Authorization: Bearer <IAMToken>' \
      --header 'Content-Type: application/json' \
      
    • 檢查回應中的使用者 ID。

      {
         "id": "5ce78e09-1356-4ef8-a45d-808b633101db",
         "identities": [],
         "attributes": {
            "role": "manager"
         }
      }
      

下一步

既然您已將未來使用者與特定屬性相關聯,請嘗試存取或更新屬性!