IBM Cloud Docs
プロファイルの管理

プロファイルの管理

IBM Cloud® App ID を使用すると、アプリケーションの個々のユーザーに関する情報を収集してプロファイルに入れることができます。 プロファイル内のユーザーに関する情報は、ユーザーとアプリの対話を通して取得するか、管理者がユーザーの代わりに追加することができます。 情報を保管して、ユーザーに合わせてパーソナライズしたアプリ・エクスペリエンスを作成するために利用することができます。

Cloud Directory のユーザーについては、 ユーザーの管理を参照してください。

コンソールでのユーザープロファイルの表示

アプリのユーザーが使用可能なデータを参照するには、App ID UI を使用できます。

  1. App ID インスタンスの**「ユーザー・プロファイル」>「プロファイル」**タブにナビゲートします。

  2. テーブルに目を通すか E メール・アドレスで検索して、情報を表示するユーザーを見つけます。 検索語は正確に一致するものでなければなりません。

  3. ユーザーの行のオーバーフロー・メニューで、**「ユーザー・プロファイルの表示」**をクリックします。 ユーザーの情報を含むページが開きます。 表示される情報について、次の表に記載します。

    App IDダッシュボードに表示されるユーザー詳細。
    詳細 説明
    IdP の ID IdP の ID は、ユーザーがアプリケーションへのサインインに使用することを選択したプロバイダーから発行されたものです。
    E メール ユーザーに関連付けられた 1 次 E メール・アドレス。
    名前 ID プロバイダーから発行されたユーザーの名前と姓。
    ID プロバイダー ユーザーがサインインに使用することを選択したプロバイダー。
    ID App ID でユーザーに割り当てられた ID。
    カスタム属性 カスタム属性は、ユーザーのプロファイルに追加された追加情報、または、ユーザーとアプリケーションの対話の中で収集された追加のユーザー情報です。
    要約 そのユーザーに関連するすべての情報が JSON オブジェクトとして表示されます。

API でのユーザー・プロファイルの表示

App ID API を使用して、アプリ・ユーザーについての詳細を表示できます。

  1. サービスのインスタンスからテナント ID を取得します。 この ID は、サービス資格情報またはアプリケーション資格情報の中にあります。

  2. E メール・アドレスなどの識別照会を使用して App ID ユーザーを検索し、ユーザー ID を見つけます。

    curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/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=example@domain.com -H "accept: application/json" -H "authorization: Bearer eyJraWQiOiIyMDE3MTEyOSIsImFsZ...."
    
  3. 前の手順で取得した ID を使用して、/users エンドポイントに対して GET 要求を行い、完全なユーザー・プロファイルを表示します。

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

    応答の例:

    {
       "id": "a0791903-ed4c-41cf-bd0e-a37957dad820",
       "name": "David Test-user",
       "email": "dave.test@domain.com",
       "picture": "https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=11122233344455566&height=50&width=50&ext=1569429199&hash=AaAaAAAAAaAAAaaA",
       "identities": [
          {
          "provider": "facebook",
          "id": "11122233344455566",
          "idpUserInfo": {
                "id": "11122233344455566",
                "name": "David Test-user",
                "picture": {
                "data": {
                   "height": 50,
                   "is_silhouette": false,
                   "url": "https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=11122233344455566&height=50&width=50&ext=1569429199&hash=AaAaAAAAAaAAAaaA",
                   "width": 50
                }
                },
                "first_name": "David",
                "last_name": "Test-user",
                "email": "dave.test@domain.com",
                "idpType": "facebook"
          }
          }
       ],
       "attributes": {
          "role": "admin"
       }
    }
    

    App ID がサポートする全ユーザーデータセットを見るには、 SCIM コアスキーマをチェックしてください。

コンソールでカスタム属性を設定する

カスタム属性を設定して、ユーザーに関するカスタム情報 (保持している役割や好みなど) をプロファイルに追加できます。 属性を設定するには、App ID UI を使用できます。

デフォルトでは、カスタム属性は変更可能であり、クライアント・アプリケーションから App ID アクセス・トークンを使用して更新できます。 つまり、適切な予防措置を講じていないと、アクセス・トークンを持ったユーザーまたはアプリケーションによって、初回サインインの直後にカスタム属性を更新される可能性があります。 このため、意図しない結果が生じる可能性があります。 例えば、ユーザーが自分の役割をユーザーから管理者に変更するかもしれません。つまり、悪意のあるユーザーに管理特権が与えられることになります。

  1. App ID ダッシュボードの**「ユーザー・プロファイル」>「設定」**タブに移動します。

  2. カスタム属性を**「使用可能」**に切り替えます。

  3. 属性を設定するユーザーの行のオーバーフロー・メニューで**「プロファイルの表示」**をクリックします。

  4. **「カスタム属性」セクションで、「編集」**をクリックします。

  5. 追加する属性を JSON オブジェクトとして入力します。 例えば、{"role":"admin"} です。

API でのカスタム属性の設定

管理者は、カスタム属性を設定して、ユーザーに関するカスタム情報 (保持している役割や好みなど) をプロファイルに追加できます。 属性を設定するには、App ID API を使用して、/users エンドポイントを呼び出すことができます。 ユーザーが初めてアプリケーションにサインインする前にカスタム属性を設定しておく場合は、将来のユーザーの事前登録を参照してください。

デフォルトでは、カスタム属性は変更可能であり、クライアント・アプリケーションから App ID アクセス・トークンを使用して更新できます。 つまり、適切な予防措置を講じていないと、アクセス・トークンを持ったユーザーまたはアプリケーションによって、初回サインインの直後にカスタム属性を更新される可能性があります。 このため、意図しない結果が生じる可能性があります。 例えば、ユーザーが自分の役割をユーザーから管理者に変更するかもしれません。つまり、悪意のあるユーザーに管理特権が与えられることになります。

  1. App ID ダッシュボードの**「ユーザー・プロファイル」>「設定」**タブに移動します。

  2. カスタム属性を**「使用可能」**に切り替えます。

  3. IAM トークンを取得します。

    1. IBM Cloud ダッシュボードで、**「管理」>「アクセス (IAM)」**をクリックします。

    2. **「IBM Cloud API キー」**を選択します。

    3. **「IBM Cloud API キーの作成」**をクリックします。

    4. キーに名前を付け、説明を入力します。 「作成」をクリックします。 キーを含む画面が表示されます。

    5. **「コピー」または「ダウンロード」**をクリックしてキーをコピーまたはダウンロードします。 画面を閉じると、このキーにはもうアクセスできなくなります。

    6. 作成した API キーを使用して、以下の cURL 要求を行います。

      curl -k -X POST \
      --header "Content-Type: application/x-www-form-urlencoded" \
      --header "Accept: application/json" \
      --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" \
      --data-urlencode "apikey=<apikey>" \
      "https://iam.cloud.ibm.com/identity/token"
      
  4. /users エンドポイントに対して PUT 要求を行います。

    curl -X PUT "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/users/<userID>/profile" \
    -H "accept: application/json" \
    -H "Content-Type: application/json" \
    -H "authorization: Bearer <token>"
    -d "{ \"attributes\": { \"points\": \"150\" } { \"role\": \"admin\" }}"
    

コンソールでプロファイルを削除する

管理者は、プロファイルを削除することにより、誰かをアプリケーションのユーザーから除外することができます。

  1. App ID インスタンスの**「ユーザー・プロファイル」>「プロファイル」**タブにナビゲートします。

  2. テーブルに目を通すか E メール・アドレスで検索して、情報を表示するユーザーを見つけます。 検索語は正確に一致するものでなければなりません。

  3. ユーザーの行のオーバーフロー・メニューで、**「削除」**をクリックします。 確認画面が表示されます。

  4. 表示された E メールを対象ユーザーの E メールと照合して、正しいユーザーを削除することを確認します。 正しいユーザーである場合は、**「削除」**をクリックします。 この操作は元に戻せません。 ユーザーを再追加することは可能ですが、プロフィールは再追加された日付で新規ユーザーと表示されます。

API でのプロファイルの削除

管理者は、プロファイルを削除することにより、誰かをアプリケーションのユーザーから除外することができます。

  1. サービスのインスタンスからテナント ID を取得します。 この ID は、サービス資格情報またはアプリケーション資格情報の中にあります。

  2. E メール・アドレスなどの識別照会を使用して App ID ユーザーを検索し、ユーザー ID を見つけます。

    curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/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=example@domain.com -H "accept: application/json" -H "authorization: Bearer eyJraWQiOiIyMDE3MTEyOSIsImFsZ...."
    
  3. 前の手順で取得した ID を使用して、DELETE エンドポイントに対して /users 要求を行い、ユーザー・プロファイルを削除します。

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

ユーザー・プロファイルのマイグレーション

ときには、高可用性や災害復旧機能を確保するために、App ID のインスタンスをアカウントに追加することが必要になることがあります。 または、サービスのインスタンス全体を非推奨にすることが必要になる場合もあります。 ユーザー情報を移行するには、App ID の 1 つのインスタンスからユーザー・プロファイルをエクスポートして、それらを別のインスタンスにインポートします。

この操作は、API でのみ実行できます。 その手順を参照するには、API の説明に切り替えてください。

ユーザー・プロファイルのエクスポート

新しいインスタンスにプロファイルをインポートする前に、それらのプロファイルを元のサービス・インスタンスからエクスポートする必要があります。

  1. App ID の両方のインスタンスに対する*「マネージャー」*の IAM 役割を割り当ててください。

  2. 元のサービス・インスタンスからプロファイルをエクスポートします。

    curl -X GET https://us-south.appid.cloud.ibm.com/management/v4/<tenantID>/users/export \
    --header "Accept: application/json" \
    --header "Authorization: Bearer <IAMToken>"
    
    ユーザー・インポート・コマンドの変数
    変数 説明
    tenantID サービスのテナント ID はサービス資格情報の中にあります。 サービス資格情報またはアプリケーション資格情報は、App ID ダッシュボードで確認できます。
    iam-token IAM トークン。

    応答の例:

    {
       "itemsPerPage": 2,
       "totalResults": 2,
       "requestOptions": {},
       "users": [
       {
          "id": "7ae804f3-0ed3-45f0-bc6b-1c6af868e6d6",
          "name": "App ID Google User profile",
          "email": "your@mail.com",
          "identities": [
             {
             "provider": "google",
             "id": "105646725068605084546",
             "idpUserInfo": {
                "id": "105646725068605084546",
                "email": "your@mail.com",
                "picture": "profilePic.jpg"
             }
             }
          ],
          "attributes": {
             "points": 150
          },
          "roles": ["admin"]
       {
          "id": "1439d777-185d-4be1-8f4a-c4e8142b87ea",
          "name": "App ID Facebook User profile",
          "email": "mail@mail.com",
          "identities": [
             {
             "provider": "facebook",
             "id": "100195207128541",
             "picture": {
                "data": {
                   "height": 50,
                   "width": 50,
                   "url": "https://url-to-idp-profile-picture.com"
                }
             },
             "first_name": "AppID",
             "last_name": "Development"
             }
          ],
          "attributes": {
             "points": 250
          },
          "roles": ["admin"]
       }
    }
    

ユーザー・プロファイルのインポート

エクスポートされたユーザー・プロファイルのリストが作成されたので、それらを新しいインスタンスにインポートできます。

  1. App ID の両方のインスタンスに対する*「マネージャー」*の IAM 役割を割り当ててください。

  2. ユーザーに役割が割り当てられている場合は、App ID の新しいインスタンス内に役割とスコープを必ず作成してください。

    役割とスコープは、以前のインスタンス内にあるものと同じつづりを使用して、完全に一致するように作成する必要があります。

  3. 新しいサービス・インスタンスにユーザーをインポートします。

    curl -X POST "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/users/import" \
    -H "accept: application/json" \
    -H "Authorization: Bearer <bearerToken>" \
    -H "Content-Type: application/json" \
    -d "{ \"itemsPerPage\": 2, \"totalResults\": 2, \"requestOptions\": {}, \"users\": [ { \"id\": \"7ae804f3-0ed3-45f0-bc6b-1c6af868e6d6\", \"name\": \"App ID Google User profile\", \"email\": \"your@mail.com\", \"identities\": [ { \"provider\": \"google\", \"id\": \"105646725068605084546\", \"idpUserInfo\": { \"id\": \"{ID}\", \"email\": \"your@mail.com\", \"picture\": \"{profile.jpg}\" } } ], \"attributes\": { \"points\": 150 } { \"role\": admin } }, { \"id\": \"{userinfo}\", \"name\": \"App ID Facebook User profile\", \"email\": \"mail@mail.com\", \"identities\": [ { \"provider\": \"facebook\", \"id\": \"{id}\", \"picture\": { \"data\": { \"height\": 50, \"width\": 50, \"url\": \"https://{url}.com\" } }, \"first_name\": \"AppID\", \"last_name\": \"Development\" } ], \"attributes\": { \"points\": 250 } { \"role\": admin } } ]}"
    

    App ID インスタンスにユーザーをインポートする場合、ID プロバイダーの ID は同じままです。