将来のユーザーの事前登録
IBM Cloud® App ID では、アプリへのアクセスが必要になることがわかっているユーザーのために、そのユーザーの初回サインインの前に、プロファイルを作成しておくことができます。
カスタム属性を使用する場合に一般的に適用されるセキュリティー上の考慮事項の詳細について、ユーザー・プロファイルの保管とアクセスで確認してください。
事前登録について
アプリケーションの開発中に既に誰がアプリ・ユーザーになるかがわかっている場合があります。 そのようなユーザーを「将来のユーザー」と呼びます。 ユーザーとアプリの対話がまだ始まらないうちから、特定のユーザーに特定の許可レベルや特定の食べ物の好みを設定する必要があることがわかっている場合があります。 例えば、開発会社の社員が、チーム・リーダーとして働く新しいメンバーを雇用するとします。 入社前にそのユーザーにアプリのadminアクセス権限を割り当てておけば、それ以上何もしなくても、新しいユーザーは最初のサインインを行ってすぐに作業を始めることができます。
例えば、その人が菜食主義者であるとします。 その人のプロファイルにカスタム属性として菜食主義者と記入しておけば、覚えておかなくても常にチーム・ランチでその食の好みを考慮することができます。
デフォルトでは、ユーザーがアプリケーションで自分のカスタム属性を変更する機能はオフに設定されています。 ユーザーにその機能を付与することはできますが、それを行う前に、生じる可能性があるセキュリティー問題を理解し、考慮しておく必要があります。
将来のユーザーにカスタム属性を割り当てるには、GUI または事前登録エンドポイントを使用します。
ユーザーはどのようにして識別されますか?
以下のいずれかを使用して、ユーザーを識別できます。
- ユーザーがアプリへのサインインに使用する E メール・アドレス。
- ある場合は、ID プロバイダーにおけるユーザーの固有 ID (GUID)。 この ID は常に存在し、固有であることが保証されていますが、いつでもすぐに見つかるとは限らず、容易に理解できるとも限りません。 例えば、Cloud Directory ではランダムな 16 バイトの GUID が使用されます。
ID プロバイダーはどのような情報を提供しますか?
以下の表を参照して、使用できる ID 情報のタイプを確認してください。
| ID プロバイダー | GUID | E メール | サブ |
|---|---|---|---|
| Cloud Directory | |||
| SAML | |||
| カスタム |
Cloud Directory はどのように扱われますか?
将来のユーザーの完全性を保証するため、Cloud Directoryは事前登録に要件を設けています。
- ユーザーを追加するには、ユーザー名ではなく E メールを使用する必要があります。 まだユーザーが 1 人もいない場合は、将来のユーザーを追加するために E メールとパスワードのモードに切り替えてください。 ユーザーがいる場合は、そのユーザーがサインインするまで待ってからカスタム属性を割り当てる必要があります。
- ユーザーは検証によって自分の ID を確認する必要があります。 特定の属性を指定して将来のユーザーを追加した場合、それらの属性はその個人のための属性になります。 将来のユーザーに対して登録されている E メールを使用してサインインするユーザーは、自分の E メール・アドレスを検証しないと、アプリへのアクセスを許可されません。 検証要件を満たすために、管理者から送信された E メールをユーザーに検証させるか、管理者がユーザーの代わりに手動でユーザーのアドレスを検証することができます。
セルフ検証を可能にするには、サービスのダッシュボードの**「Cloud Directory」タブで、「E メールの検証」を「オン」**に設定します。 これにより、初回サインイン時に検証を要求する E メールがユーザーに送信されます。 ユーザーを手動で検証する作業は、管理者が行う必要があります。 ペイロードの
statusフィールドをCONFIRMEDに設定するよう、Cloud Directory 管理 API にリクエストする。
管理者が将来のユーザーを追加した後に、そのユーザーが E メールを検証せずにアプリにサインインした場合は、ユーザーのカスタム属性は削除され、プロファイルは初めから作成されます。
カスタム ID プロバイダーを使用する場合に必要になる特別な作業はありますか?
事前にユーザー情報をアプリケーションに追加する場合、認証フローで提供される任意の固有 ID を使用できます。 その ID は、許可要求中に送信される署名付き JSON Web トークンの sub と_正確に_一致している必要があります。 ID が一致しない場合、追加するプロファイルは正常にリンクされません。
将来のユーザーの追加
プロセスについて学習し、セキュリティーへの影響を検討したので、ユーザーを追加してみてください。
ユーザーの事前定義属性は、初めて認証されるときまでは空です。 これらの属性が空でも、ユーザーは完全に認証されます。 このようなユーザーのプロファイル ID は、既にサインインしているユーザーのものとまったく同じように使用できます。 例えば、プロファイルを変更、検索、または削除することができます。
開始前に
開始する前に、以下の情報を用意しておく必要があります。
GUI を使用する場合
GUI を使用して、将来のユーザーとそのカスタム属性を追加できます。
Cloud Directory のユーザー名とパスワードの構成では、将来のユーザーを追加する機能は無効です。
-
App ID ダッシュボードの**「ユーザー・プロファイル」**タブに移動します。
-
**「将来のユーザー」をクリックします。 将来のユーザーが既に存在する場合は、既に追加したユーザーのリストを示す表が表示されます。 別のユーザーを追加するには、「プロファイルの作成」をクリックします。 ユーザーがまだ存在しない場合は、「始めに」**をクリックします。 画面が開きます。
-
ユーザーの E メールを入力します。
-
**「ID プロバイダー」**ドロップダウンから、サインインに使用する ID プロバイダーを選択します。
-
以下の例に示すように、JSON オブジェクト形式で情報を入力してカスタム属性を追加します。
{ "food": "Pizza", "preference": "Vegetarian", "points": "37" } -
保存 をクリックします。 表が表示されます。ユーザーには ID が割り当てられています。
API を使用する場合
API を使用して、将来のユーザーとそのカスタム属性を追加できます。
-
IBM Cloud にログインします。
ibmcloud login -
以下のコマンドを実行して、IAM トークンを見つけます。
ibmcloud iam oauth-tokens -
JSON オブジェクトとして設定するユーザーと属性の記述を含めた POST 要求を
/usersエンドポイントに対して行います。ヘッダー:
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ユーザーが認証に使用する ID プロバイダー。 オプションは以下の通り: samlcloud_directory,facebook,google,appid_custom.idp-identityID プロバイダーによって提供される固有 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 }}}' -
登録が成功したことを確認します。
-
作成されたユーザー・プロファイルを見つけます。
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" } }
-
次のステップ
将来のユーザーに特定の属性が関連付けられたので、次は、属性へのアクセスまたは属性の更新を試してください。