IBM Cloud Docs
常见问题 App ID

常见问题 App ID

此常见问题提供了对 IBM Cloud® App ID 服务相关常见问题的解答。

为什么需要允许列出重定向 URI?

重定向 URI 是应用程序的回调端点。 当您允许您的 URI 列表时,就意味着您允许 App ID 将您的用户发送到该位置。 在运行时,App ID 会先根据允许列表验证 URI,然后再重定向用户。 这一过程有助于防止网络钓鱼攻击,降低攻击者获取用户令牌的可能性。 有关重定向 URI 的更多信息,请参阅添加重定向 URI

不要在 URL 中包含任何查询参数。 在验证过程中将忽略这些参数。 示例 URL: http://host:[port]/path

加密在 App ID 中如何工作?

请查看下表以获取有关加密的常见问题的答案。

有关App ID如何处理加密的常见问题
问题 答案
为什么使用加密? 我们保护用户信息的方法之一是对客户数据进行静态和传输加密。 服务会使用按租户分发的密钥对静态客户数据进行加密,并在所有网络分段中强制实施 TLS 1.2+。
App ID 中使用的是哪些算法? 该服务使用 AESSHA-256 并撒盐。
您是否使用公共或开放式源代码加密模块或提供程序? 您是否公开过加密功能? 该服务使用 avax.crypto Java 库,但从未公开加密功能。
密钥如何存储? 密钥生成后,会使用特定于每个区域的主密钥进行加密,然后存储在本地。 主密钥存储在 Key Protect 中。 每个区域都有其自己的信任根密钥,此密钥存储在 Key Protect 中,并通过 HSM 进行备份。 每个服务实例(租户)都有自己的数据加密和令牌签名密钥,这些密钥使用区域的信任根密钥进行加密。
您使用何种密钥强度? 该服务使用 16 字节。
您是否调用了任何暴露加密功能的远程应用程序接口 不调用。

App ID 使用什么时钟同步?

App ID 在使用内部 NTP 服务器 servertime.service.softlayer.com 的 IBM Cloud中运行。

使应用程序与 App ID的时间源同步取决于您用于运行应用程序的环境。

  • 如果应用程序正在 IBM Cloud 经典基础架构中运行,请将 NTP 服务器设置为 servertime.service.softlayer.com
  • 如果您的应用程序在IBM Cloud VPC基础架构中运行,请将 NTP 服务器设置为 time.adn.networklayer.com
  • 如果应用程序未在 IBM Cloud中运行,那么您无权访问这些时间服务器。 在这种情况下,请将 NTP 服务器设置为 time-a.nist.govtime-b.nist.gov

App ID 和 Keycloak 有什么区别?

App ID 和 Keycloak 都可用于向应用程序添加认证以及保护服务。 这两个产品的主要区别在于其打包方式。

Keycloak 打包成软件,这意味着作为开发者,您将在下载产品后负责维护产品的功能。 您负责托管、高可用性、合规性、备份、DDoS 防御、负载均衡、Web 防火墙、数据库等。

App ID 是以“即服务”形式提供的完全受管产品。 这意味着 IBM 负责服务的操作,处理合规性,多个专区中的可用性,SLA 等。App ID 还具有与 IBM Cloud Platform 的集成体验,该平台包含本机运行时和服务,例如 Kubernetes Service,Cloud Functions和 Activity Tracker。

可以在多个应用程序中使用同一客户端标识吗?

虽然从技术上讲,_can_,但出于几个原因,强烈建议不要在多个应用程序中使用相同的凭据。 最重要的一点是,当你在不同的应用程序之间共享你的 ID 时,任何类型的攻击或入侵都会影响到你的整个环境,而不是一个应用程序。 例如,如果在三个应用程序中使用您的标识,并且其中一个应用程序已损坏,那么所有这三个应用程序都将损坏。 攻击者能够模拟您的任何应用程序。 第二个原因是,当您在多个应用程序中使用同一个客户端 ID 时,无法区分不同的应用程序。 例如,您无法判断使用了哪个应用程序来生成令牌。

如何更新应用程序以使用新的服务实例而不丢失任何数据

您可以将一个 App ID 实例中的信息迁移到另一个实例。

  1. 创建服务的实例。
  2. 使用 GUI 复制身份提供者配置。
  3. 迁移用户概要文件。 已知用户将导出为 JSON 对象。 无法迁移匿名用户。 可以选择将整个对象导入到新实例,或者如果有多个实例,可以视情形拆分对象并划分用户。 对于 Cloud Directory,请参阅迁移用户。 对于联合身份提供者,请使用以下步骤。
  4. 创建应用程序凭证以调用新的服务实例。
    1. 在服务仪表板中,导航至应用程序选项卡。
    2. 单击添加应用程序,并为应用程序提供名称。 然后,单击保存
    3. 单击表中的查看凭证并复制输出内容。
    4. 将新凭证粘贴到应用程序中。
  5. 将应用程序更新为使用包含任何 URL 的新凭证。
  6. 根据配置,可能需要重新部署应用程序,或者取消绑定并重新绑定应用程序。

App ID 是否可以帮助配置注销?

根据配置应用程序的方式,App ID 可帮助为用户提供注销功能。 请查看下表,以了解注销功能的可用位置。

注销功能选项
描述
App ID SDK App ID SDK 具有内置注销功能。
云目录 SSO[1] App ID 为 Cloud Directory SSO 功能提供内置注销功能。
Ingress Ingress 提供内置注销功能。
Istio Istio 适配器配置为通过 OIDC 提供注销功能。

配置注销

要配置注销,必须配置应用程序以向身份提供者发送请求。 然后,将用户重定向到不需要认证的应用程序区域。 在大多数用例中,应用程序服务器会话可能由 App ID SDK,Ingress 或 Istio 设置,这些 SDK 与联合身份提供者 (例如 SAML 或 Cloud Directory) 合作以启用认证和授权。

在以下 HTML 示例中,使用 App ID SDK 来配置注销。 但是,如果您正在使用另一个选项,那么可以使用此片段作为指南,并根据您的需求对其进行更新。

<script>
  var ticker = setInterval(tick, 1000);
  var counter = 5;
  function tick() {
    var timerDiv = document.getElementById("timer");
    if (counter > 0) {
      timerDiv.innerText = "Logged out. Redirecting back in " + (counter--) + " seconds.";
    } else {
      document.location = "./appid_logout";
    }
  } </script>
<iframe height="0" width="0" src="https://login.microsoftonline.com/common/wsfederation?wa=wsignout1.0"></iframe>

  1. 与云目录 SSO 功能一起使用的所有重定向 URL 必须添加到 App ID UI 中的注销 URL allowlist 中。 ↩︎