常见问题 App ID
此常见问题提供了对 IBM Cloud® App ID 服务相关常见问题的解答。
为什么需要允许列出重定向 URI?
重定向 URI 是应用程序的回调端点。 当您允许您的 URI 列表时,就意味着您允许 App ID 将您的用户发送到该位置。 在运行时,App ID 会先根据允许列表验证 URI,然后再重定向用户。 这一过程有助于防止网络钓鱼攻击,降低攻击者获取用户令牌的可能性。 有关重定向 URI 的更多信息,请参阅添加重定向 URI。
不要在 URL 中包含任何查询参数。 在验证过程中将忽略这些参数。 示例 URL: http://host:[port]/path
加密在 App ID 中如何工作?
请查看下表以获取有关加密的常见问题的答案。
问题 | 答案 |
---|---|
为什么使用加密? | 我们保护用户信息的方法之一是对客户数据进行静态和传输加密。 服务会使用按租户分发的密钥对静态客户数据进行加密,并在所有网络分段中强制实施 TLS 1.2+。 |
App ID 中使用的是哪些算法? | 该服务使用 AES 和 SHA-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.gov
或time-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 实例中的信息迁移到另一个实例。
- 创建服务的实例。
- 使用 GUI 复制身份提供者配置。
- 迁移用户概要文件。 已知用户将导出为 JSON 对象。 无法迁移匿名用户。 可以选择将整个对象导入到新实例,或者如果有多个实例,可以视情形拆分对象并划分用户。 对于 Cloud Directory,请参阅迁移用户。 对于联合身份提供者,请使用以下步骤。
- 创建应用程序凭证以调用新的服务实例。
- 在服务仪表板中,导航至应用程序选项卡。
- 单击添加应用程序,并为应用程序提供名称。 然后,单击保存。
- 单击表中的查看凭证并复制输出内容。
- 将新凭证粘贴到应用程序中。
- 将应用程序更新为使用包含任何 URL 的新凭证。
- 根据配置,可能需要重新部署应用程序,或者取消绑定并重新绑定应用程序。
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>
-
与云目录 SSO 功能一起使用的所有重定向 URL 必须添加到 App ID UI 中的注销 URL allowlist 中。 ↩︎