为应用程序添加品牌形象
通过 IBM Cloud® App ID,您可以使用自己的品牌屏幕来定制应用程序的整个注册体验。 您可以用自己的登录部件替换所提供的登录部件,添加更多的字段,验证密码强度,并根据拦截列表验证电子邮件地址!
了解屏幕复用
复用现有 UI 时,您可为应用程序创建紧密结合的登录流程。 通过使用相同的图像、颜色和品牌形象,用户更有可能识别到您的品牌,甚至在未直接与您的应用程序交互的情况下也是如此。
在登录或注册屏幕中需要获取哪些信息?
请求提交登录表单时,该请求必须在请求主体中包含用户名和密码参数。 您的登录或注册页面必须向用户询问该信息。
我可以使用一些自己的屏幕和一些默认屏幕吗?
是的! 您可以创建一个混合流程,使用您的部分屏幕和一些默认屏幕。 但是,每个流程只能使用一个选项。 例如,您可以使用自己的登录屏幕,还可以使用缺省注册屏幕。 但是,如果选择使用缺省注册屏幕,那么必须在整个注册流程(包括注册验证)中继续使用缺省屏幕。
这些流程在技术上有何不同?
服务使用 OAuth 2.0 授权流程来映射授权过程。 当您配置 Facebook 等社交身份供应商时,授权授予流程将用于调用登录小工具。 当您使用自己的屏幕时,资源所有者密码凭据流程用于提供访问和身份令牌,您可以使用这些令牌调用自己的屏幕。
使用 Android SDK 来为应用程序添加品牌形象
在启用 Cloud Directory 的情况下,可以使用 Android SDK 来调用定制屏幕。 您可以选择希望用户能够与其进行交互的屏幕组合。
登录
-
在控制台中配置云目录 设置。
-
将以下代码添加到应用程序中。 用户单击定制屏幕上的登录时,将触发登录流程。 您可以通过提供用户的用户名和密码来获取访问、身份和刷新令牌。
AppID.getInstance().signinWithResourceOwnerPassword(getApplicationContext(), username, password, new TokenResponseListener() { @Override public void onAuthorizationFailure (AuthorizationException exception) { //Exception occurred } @Override public void onAuthorizationSuccess (AccessToken accessToken, IdentityToken identityToken, RefreshToken refreshToken) { //User authenticated } });
使用 iOS Swift SDK 来为应用程序添加品牌形象
启用云目录后,您可以使用 iOS Swift SDK 调用自己的品牌屏幕。
登录
-
在控制台中配置云目录 设置。
-
将以下代码放入应用程序中。 用户尝试登录时,会调用定制屏幕,并且授权和认证过程将从定制登录页面开始。
class delegate : TokenResponseDelegate { public func onAuthorizationSuccess(accessToken: AccessToken?, identityToken: IdentityToken?, response:Response?) { //User authenticated } public func onAuthorizationFailure(error: AuthorizationError) { //Exception occurred } } AppID.sharedInstance.signinWithResourceOwnerPassword(username: username, password: password, delegate: delegate())
使用 Node.js SDK 为应用程序添加品牌形象
在启用 Cloud Directory 的情况下,可以使用 Node.js SDK 来调用定制屏幕。
登录
通过使用 WebAppStrategy
,用户可以使用用户名和密码登录网络应用程序。 用户成功登录应用程序后,其访问令牌会在 HTTP 会话中持续存在。 在 HTTP 会话关闭或到期后,访问令牌也将销毁。
-
在控制台中配置云目录 设置。
-
将以下代码放入应用程序中。 用户尝试登录时,会调用定制屏幕,并且授权和认证过程将开始。
app.post("/form/submit", bodyParser.urlencoded({extended: false}), passport.authenticate(WebAppStrategy.STRATEGY_NAME, { successRedirect: LANDING_PAGE_URL, failureRedirect: ROP_LOGIN_PAGE_URL, failureFlash : true // allow flash messages }));
登录参数 参数 描述 successRedirect
要在成功认证后将用户重定向到的 URL。 failureRedirect
要在认证失败时将用户重定向到的 URL。 当出现以下验证失败时,用户将被重定向到指定的 URL :
- 用户输入了错误的用户名或密码。
- App ID 实例的计划上限已达到。
failureFlash
当设置为 true
时,云目录服务将返回错误信息。 默认情况下,该值设置为false
。如果使用 HTML 提交请求,可以使用 正文解析器中间件。 要查看返回的错误信息,可以使用 connect-flash。 要了解它的运行情况,请查看 网络应用程序示例。
使用 API 为应用程序添加品牌形象
您可以显示自己的定制屏幕,并利用 App ID 的认证和授权功能。 利用 Cloud Directory 作为身份提供者,用户不需要多少帮助就可以与应用程序进行交互。 用户无需寻求帮助就可以完成登录、注册、重置密码等操作。
为了实现这种体验,App ID 提供了 REST API。 您可以使用 REST API 构建后台服务器,为您的网络应用程序提供服务,也可以使用自定义屏幕与移动应用程序进行交互。
管理 API 通过 IBM Cloud Identity and Access Management 生成的令牌进行保护,这意味着帐户所有者可以指定团队中哪个成员对每个服务实例具备哪种访问级别。 有关 IAM 和 App ID 如何协作的更多信息,请参阅服务访问管理。
在配置设置后,您可以调用以下端点以显示每个屏幕。
注册
您可以使用 /sign_up
端点来允许用户向应用程序注册。 在请求主体中提供以下数据:
- 您的租户标识。
- 具有以下必需属性的 Cloud Directory 用户数据。 更多详情,请参阅 SCIM 完整用户表示法。
password
属性。- 具有至少一个电子邮件地址和设置为
true
的primary
属性的emails
数组。
根据您的电子邮件配置,用户向应用程序注册时,可能会收到验证请求和/或收到欢迎电子邮件。 用户注册您的应用程序时,将触发这两种类型的电子邮件。 验证电子邮件包含用户可单击以确认其身份的链接;这将显示一个屏幕,感谢他们验证或确认其验证已完成。
要显示您自己的发布验证页面,请执行以下操作:
- 在 App ID 控制面板中导航到云目录身份提供程序。
- 单击电子邮件验证选项卡。
- 在定制验证页面 URL 中,输入登录页面的 URL。
当提供此值时,App ID 将调用 URL 和 context
查询。 当您调用 /sign_up/confirmation_result
端点并传递接收到的 context
参数时,将显示结果,告知您用户是否已验证其帐户。 如果已验证,那么您可以显示定制页面。
忘记密码
您可以使用 /forgot_password
端点允许用户在忘记密码时恢复其密码。
在请求主体中提供以下数据:
- 您的租户标识。
- Cloud Directory 用户的电子邮件。
调用端点时,系统会向用户发送重置密码的电子邮件。 该电子邮件包含重置按钮。 按下该按钮后,App ID 将显示一个可供用户重置其密码的屏幕。
您可以提供您自己的重置密码后的页面:
- 在控制台中配置云目录 设置。 允许用户通过应用程序管理自己的帐户必须设置为开启。
- 在服务仪表板的重置密码选项卡中,确保将忘记密码电子邮件设置为开启。
- 在定制重置密码页面的 URL 中输入登录页面的 URL
当提供此值时,App ID 将调用 URL 和 context
查询。 context
参数用于在调用 /forgot_password/confirmation_result
时接收结果。 如果结果成功,那么可以显示定制页面。
向定制重置密码页面添加一个随机字符串,并在提交请求时将其传递到后端。 让您的处理程序验证字符串,并仅在其有效时调用 /change_password
端点。 这样做,您可以减少后端重置密码端点的漏洞。
更改密码
您可以通过两种方式使用 /change_password
端点: 当用户提交重置请求时,或者当用户登录到应用程序并想要更新其密码时。
在调用 /change_password
API 以允许用户重置其密码之前,强烈建议通过使用 /forgot_password/confirmation_result
端点来检查 context
是否具有成功结果。 此操作会向后端重置密码过程添加更高级别的安全性,并确保仅当 context
仍然有效时用户才能修改其密码。
要在重置请求后更新用户的密码,请在请求主体中提供以下数据:
- 您的租户标识。
- 用户的新密码。
- Cloud Directory 用户 UUID。
- 可选:执行密码重置的 IP 地址。 如果您选择传递 IP 地址,那么占位符
%{passwordChangeInfo.ipAddress}
可用于更改密码电子邮件模板。
根据您的配置,当更改密码时,App ID 会向用户发送电子邮件,告知用户发生了密码更改。
要允许用户在登录到应用程序时更改其密码,请在请求主体中提供以下数据:
- 您的租户标识。
- 用户的新密码。
- Cloud Directory 用户 UUID。
您的更改密码页面必须提示用户输入其当前密码及其新密码。
您的后端使用 ROP API 验证用户的当前密码,如果有效,则使用新密码调用端点。 根据您的配置,当更改密码时,App ID 可能会向用户发送电子邮件,告知用户发生密码更改。
重新发送
当用户由于某种原因没有收到电子邮件时,您可以使用 /resend/<templateName>
重新发送电子邮件。
在请求主体中提供以下数据:
- 租户标识。
- 模板名称
- Cloud Directory 用户 UUID。
更改详细信息
当用户登录到应用程序时,他们可以更新其部分信息。 您可以使用 /Users/<userID>
获取和更新他们的信息。
更新用户详细信息时,端点会在请求体中获取 SCIM 格式的更新用户数据。 请确保仅更改相关详细信息。
无法更改其电子邮件地址。