预注册未来用户
通过 IBM Cloud® App ID,对于已知将来需要访问应用程序的用户,您可以在这些用户初始登录之前,开始为其构建概要文件。
要了解有关使用定制属性时可能适用的安全注意事项的更多信息,请参阅存储和访问用户概要文件。
了解预注册
有时,在开发应用程序时,您就已经知道谁将是应用程序的用户。 这些用户称为“未来用户”。 在某些用户开始与应用程序交互之前,您可能就已经提前知道他们需要特定许可权级别或有特定食品偏好。 例如,您在一家开发公司工作,聘用了新人来担任团队负责人。 您可能希望在该用户开始使用应用程序之前,就为该用户分配对应用程序的admin访问权,这样该用户首次登录后,无需与您进行任何进一步的交互,就可以立即开始工作。 假设此人是素食主义者。 通过将这一点注释为其概要文件中的定制属性,可以为所有团队午餐拉取此偏好,而不必让他们提醒您。
缺省情况下,用户通过应用程序更改自己定制属性的功能设置为关闭。 您可以为用户提供该功能,但在此之前,请确保您了解并考虑了可能会出现的安全问题。
如何标识用户?
可以使用以下其中一项来标识用户:
- 用户用于登录到应用程序的电子邮件地址。
- 身份提供者中用户的唯一标识(称为 GUID,如果可用)。 虽然此标识始终存在且保证是唯一的,但不一定现成可用或易于理解。 例如,Cloud Directory 使用随机的 16 字节 GUID。
身份提供者会提供哪些信息?
查看下表以了解可以使用的身份信息的类型。
| 身份提供者 | GUID | 电子邮件 | Sub |
|---|---|---|---|
| Cloud Directory | |||
| SAML | |||
| 定制 |
Cloud Directory 的处理方式是什么?
为确保未来用户的完整性,云目录对预注册提出了要求。
- 必须使用电子邮件而不是用户名来添加用户。 如果您还没有任何用户,请切换到电子邮件和密码方式来添加未来的用户。 如果您已有用户,那么必须等待该用户登录后才可分配定制属性。
- 用户必须通过验证来确认其身份。 添加具有特定属性的未来用户时,这些属性仅适用于该用户。 使用电子邮件登录且注册为未来用户的任何用户都必须先验证其电子邮件地址,然后才能被授予对应用程序的访问权。 要完成验证需求,您可以发送电子邮件让用户验证,或者您代表用户来手动验证其地址。 要允许用户本人验证,请在服务仪表板的 Cloud Directory 选项卡中将电子邮件验证设置为开启。
这将向用户发送一封电子邮件,以请求对其初始登录进行验证。 要手动验证用户,您必须是管理员。 向云目录 管理 API 提出请求,将有效负载中的
status字段设置为CONFIRMED。
如果您添加了未来用户,但该用户在未先验证其电子邮件的情况下就登录到应用程序,那么会删除该用户的定制属性,并从头开始创建概要文件。
使用定制身份提供者时,需要执行任何特殊操作吗?
预先将用户信息添加到应用程序时,可以使用认证流程提供的任何唯一标识。 标识符必须与授权请求中发送的已签名 JSON 网络令牌的 sub _完全_匹配。 如果标识不匹配,那么要添加的概要文件不会成功链接。
添加未来用户
既然您已经了解了流程并考虑了安全影响,请尝试添加用户。
用户的预定义属性在其首次认证之前为空。 虽然这些属性为空,但仍会认为用户已经过完全认证。 您可以使用该用户的概要文件标识,就像您使用已登录用户的那样。 例如,您可以修改、搜索或删除概要文件。
准备工作
开始之前,您必须具有以下信息:
使用 GUI
可以使用 GUI 来添加未来用户及其定制属性。
对于 Cloud Directory 的用户名和密码配置,禁用了添加未来用户的功能。
-
转至 App ID 仪表板的用户概要文件选项卡。
-
单击未来用户。 如果您已经有未来用户,那么将看到一个表,其中列出已添加的用户。 要添加其他用户,请单击构建概要文件。 如果您还没有任何用户,请单击开始使用。 这将打开一个屏幕。
-
输入用户的电子邮件。
-
从身份提供者下拉列表中,选择用户登录时要使用的身份提供者。
-
通过在 JSON 对象中输入信息来添加定制属性,如以下示例所示。
{ "food": "Pizza", "preference": "Vegetarian", "points": "37" } -
单击保存。 这将显示已添加用户的表,并且已为该用户分配了标识。
使用 API
可以使用 API 来添加未来用户及其定制属性。
-
登录到 IBM Cloud。
ibmcloud login -
通过运行以下命令来查找 IAM 令牌。
ibmcloud iam oauth-tokens -
对
/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身份提供者提供的唯一标识。 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": "5ce78e09-1356-4ef8-a45d-808b633101db", "identities": [], "attributes": { "role": "manager" } }
-
后续步骤
既然您已将未来用户与特定属性相关联,请尝试访问或更新属性!