创建和管理 OAuth 客户端
OAuth 是一种用于授权和委派的安全协议。它允许第三方应用程序访问 API 资源,而无需泄露最终用户凭据。OAuth 客户端请求授权代码,将其交换为访问令牌,并使用该令牌通过 API 访问 Qlik Cloud 内容。
OAuth 客户端类型
OAuth 客户端是代表用户请求访问 Qlik Cloud 中资源的 Web 应用程序或软件。OAuth 定义了两种客户端类型(公共客户端和机密客户端),以确保应用程序(客户端)和授权服务器(Qlik Cloud)之间的授权安全。
Qlik Cloud 支持传统 Web(服务器端)应用程序的机密客户端,以及使用特定授权流的本机和单页应用程序的公共客户端。
有关客户端类型的官方 OAuth 2.0 规范,请参阅 RFC 6749 第 2.1 节:OAuth 2.0 客户端类型。
公共客户端
公共客户端是不使用客户端密码的应用程序,因为它们无法保持所需凭据的机密性。在 Qlik Cloud 中,这些包括前端应用程序,例如具有嵌入式分析的单页应用程序 (SPA) 或 Qlik Sense 中需要用户身份验证的自定义可视化扩展。
机密客户端
机密客户端可以安全地存储客户端 ID 和客户端密码,并使用它们向授权服务器进行身份验证。这些客户端可以访问受保护的资源,因为它们拥有客户端密码。
示例:具有安全后端的 Web 应用程序,该后端与 Qlik Cloud API 交互以管理用户访问或编排数据刷新任务。
OAuth 授权流
Qlik 支持两种授权流(授权类型):
-
授权代码流:适用于机密客户端。
-
带有代码交换证明密钥 (PKCE) 的授权代码流:适用于公共客户端。
授权代码流
此流由源代码未公开的服务器端应用程序使用。它涉及将授权代码交换为访问令牌,并使用客户端密码进行身份验证。使用此流的 Web 应用程序必须是服务器端的,因为在令牌交换期间会将客户端密码传递给授权服务器。
有关授权代码流的更多信息,请参阅官方 OAuth 2.0 文档:Authorization Code Flow。
带有 PKCE 的授权代码流
本机和单页应用程序无法安全地存储客户端密码,因为它们的源代码可以在浏览器中被反编译或检查。PKCE 通过要求使用代码验证器来获取访问令牌,从而增强了安全性。
有关使用 PKCE 进行授权的更多信息,请参阅官方 OAuth 2.0 文档:Authorization Code Flow with Proof Key for Code Exchange (PKCE)。
OAuth 范围和权限
OAuth 范围定义了授予 OAuth 客户端应用程序的访问级别。例如,访问令牌可以允许对资源的完全访问权限,或将其限制为只读访问权限。在 Qlik Cloud 中,范围控制客户端对可用功能和资源的访问。如果没有范围,客户端将无法访问任何资源。
API 凭据提供对 Qlik Cloud 的直接编程访问,并且不限于用户界面中可用的工作流。使用最小特权原则分配角色和 OAuth 范围。对待服务帐户和 API 凭据应与对待管理员凭据同等谨慎。有关详细信息,请参阅 API 访问控制和信任边界。
可用的 OAuth 范围
下表列出了可用的范围及其关联的权限:
创建 OAuth 客户端
租户管理员在 Administration 活动中心的 OAuth 页面上管理 OAuth 客户端。使用 OAuth 客户端,您可以将客户端应用程序与 Qlik Cloud 集成以安全地访问资源。
OAuth 客户端的限制
适用以下限制:
-
每个客户端最多 5 个重定向 URL。
-
每个客户端最多 5 个允许的源。
-
每个客户端最多 5 个客户端密码。
-
每个租户最多 200 个 OAuth 客户端。
创建 OAuth 客户端的步骤
执行以下操作:
-
在 Administration 活动中心,转到 OAuth。
-
单击新建。
-
选择客户端类型:
-
Web 适用于机密客户端。
-
单页应用程序 或 本机 适用于公共客户端。
-
匿名嵌入 适用于公共客户端。
-
-
在对话框中,输入 OAuth 客户端的名称。
-
(可选)添加描述。
-
通过滚动或使用搜索字段选择任何可用的范围。
提示注释使用 全部 和 已选择 按钮查看所有范围或仅查看选定的范围。 -
输入 OAuth 客户端应用程序的一个或多个重定向 URL(最多 5 个)。然后单击 添加 将重定向 URL 添加到允许列表。
-
重定向 URL 是授权服务器在成功验证并向客户端应用程序授予权限后发送用户浏览器的位置。例如,https://www.exampleapp.com/oauth/callback,其中 /oauth/callback 处理来自 OAuth 提供程序的身份验证回调。
-
仅当其 URL 在重定向 URL 的允许列表中时,Qlik Cloud 才会在成功授权后将用户重定向回应用程序。
-
URL 必须以 https:// 开头,除非域是 localhost,在这种情况下它可以以 http:// 开头。本机应用程序也可以使用特定于应用程序的链接格式,例如 exampleapp://。
-
-
对于 Web 或 单页应用程序 客户端类型,指定一个或多个允许的源(最多 5 个)。
-
仅当 URL 添加到允许的源列表时,才会授予对应用程序的访问权限。
-
-
对于客户端类型 Web,您可以启用以下选项之一以在没有用户交互的情况下进行自动系统访问:
-
允许机器对机器 (M2M):在没有用户参与的情况下启用系统到系统的通信。
-
允许 M2M 用户模拟:允许您的应用程序代表用户进行身份验证,在身份验证过程中充当他们。
-
-
对于客户端类型 Web,在 身份验证方法 下选择一个或两个选项:
-
客户端密码(默认)
-
私钥 JWT,这是一种更安全的选项,它使用公钥/私钥对而不是共享密码对客户端进行身份验证。
-
当您选择 私钥 JWT 时,将显示 公钥 字段。以 JSON Web Key (JWK) 格式输入第三方应用程序的公钥。私钥保留在您的应用程序中以签署 JWT。有关公钥格式的更多信息,请参阅 Qlik Developer Portal 上的 创建用于签署 JWT 的公钥/私钥对。
信息注释公钥取决于您的身份提供程序的要求。如果您的第三方应用程序的公钥是不同的格式,请使用第三方工具将其转换为 JWK。
-
-
-
单击创建。
-
单击 复制到剪贴板 以保存客户端 ID 和客户端密码供以后使用。安全地存储客户端密码。
信息注释公共客户端没有客户端密码。 -
单击完成。
特定用例的 OAuth 客户端
有关 OAuth 客户端用例,请参阅以下资源:
-
Qlik Developer Portal 上的 OAuth 概述:OAuth 用例和不同 OAuth 类型的概述。
-
为 Microsoft Office 的 Qlik 加载项创建 OAuth 客户端:设置 OAuth 客户端以安装 Qlik 的 Microsoft Excel 加载项。
-
为应用程序内容的匿名嵌入创建 OAuth 客户端:创建 OAuth 客户端以启用对嵌入式应用程序内容的匿名访问。
为 Microsoft Office 的 Qlik 加载项创建 OAuth 客户端
需要 OAuth 客户端配置才能安装 Microsoft Office 的 Qlik 外接程序。报表开发人员使用外接程序来准备 报表模板,以便通过 Qlik Cloud 进行应用程序内报表。
为了使 OAuth 在外接程序中工作,需要使用下面所示的确切配置来配置 OAuth 客户端。
执行以下操作:
-
在 Administration 活动中心的 Qlik Cloud 中,转到 OAuth。
-
单击新建。
-
在客户端类型下拉菜单中,选择单页应用程序。将显示更多字段。
-
插入名称。描述是可选的。
-
至少,选中复选框以包括 user_default 范围。您可以在配置中包括其他作用域,但如果没有 user_default,安装将无法进行。
有关每个可用范围的完整描述,请参阅可用的 OAuth 范围。
-
在添加重定向 URL 字段中,插入 Qlik Cloud 租户的 URL,后跟固定字符串:/office-add-ins/oAuthLoginSuccess.html
结果应如下所示:https://<tenant or alias hostname>.<region>.qlikcloud.com/office-add-ins/oAuthLoginSuccess.html。例如:http://example-company-123.us.qlikcloud.com/office-add-ins/oAuthLoginSuccess.html
-
单击添加。
-
在添加允许的来源字段中,插入租户 URL,然后单击添加。
-
单击创建。
-
此时会出现复制客户端 ID 窗口。您可以选择将客户端 ID 复制到剪贴板,或者单击完成关闭窗口。
创建 OAuth 客户端后,从 Administration 活动中心获取到更新的清单 XML 链接。转到 Settings 页面,然后选择 Email and reports 选项卡。在 共享和报告 部分中,选择 Microsoft Office 的 Qlik 外接程序。使用此链接可部署和安装加载项。
有关生成清单文件以及部署和安装加载项的更多信息,请参阅:
为应用程序内容的匿名嵌入创建 OAuth 客户端
要使用 qlik-embed 嵌入应用程序内容以进行匿名访问,您需要创建一个具有专为此用例设计的类型的 OAuth 客户端。
执行以下操作:
-
在 Administration 活动中心,转到 OAuth 部分。
-
单击新建。
-
在 客户端类型 下拉菜单中,选择 匿名嵌入。
-
输入 OAuth 客户端的 名称,并(可选)输入 描述。
-
在 允许的源 下,输入您需要授权的每个源。这些是将访问 Qlik Cloud 租户以检索嵌入式分析信息的域。
插入每个 URL 后单击 添加。
-
完成后,单击 创建。
-
单击 复制到剪贴板 以保存客户端 ID 供以后使用。当应用程序内容与 qlik-embed 嵌入时将需要它。
-
单击完成。
编辑 OAuth 客户端
您可以重命名 OAuth 客户端、更新描述或管理重定向 URL。
执行以下操作:
- 在 Administration 活动中心,转到 OAuth。
- 找到您要编辑的 OAuth 客户端。
- 单击
,然后选择 编辑。
- 根据需要修改 OAuth 客户端选项。
- 单击保存。
删除 OAuth 客户端
当不再需要 OAuth 客户端或要撤销访问权限时,您可以将其删除。
执行以下操作:
-
在 Administration 活动中心,转到 OAuth。
-
选择一个或多个要删除的 OAuth 客户端,然后单击 删除。
- 确认删除。
发布 OAuth 客户端
OAuth 客户端最初绑定到创建它们的租户。但是,您可以将 OAuth 客户端配置为在同一区域内的多个租户之间共享。这使第三方应用程序能够在不同的 Qlik Cloud 租户中使用相同的客户端 ID。
应用程序所有者可以轮换密码并更新配置,而无需 租户管理员 的交互。租户管理员不需要管理凭据或了解已发布客户端的任何配置详细信息。
要允许其他租户连接到 OAuth 客户端,您必须发布它。
执行以下操作:
- 在 Administration 活动中心,转到 OAuth。
- 找到您要发布的 OAuth 客户端。
- 单击客户端旁边的
,然后选择 发布。
- 单击 发布 进行确认。
发布 OAuth 客户端后,它将可供其他租户在外部使用。当用户访问使用此 OAuth 客户端的外部网站时,系统将提示他们输入其租户主机名称和用户凭据,除非他们已经有一个激活的 SaaS 会话。
初始登录将需要租户管理员的同意。获得批准后,OAuth 客户端将出现在租户的 Administration 活动中心。
同意方法
默认情况下,Qlik Cloud 在进行身份验证时会提示用户同意。为了简化流程,特别是对于受信任的应用程序,您可以将同意方法设置为“受信任”,这将跳过同意提示。
同意有两个选项:
-
必需:每次 OAuth 客户端请求新范围时,都会提示用户同意。此方法可确保用户明确批准每个访问级别。
-
受信任:不会提示用户同意。此选项仅适用于未发布的客户端。对于已发布的客户端,同意方法始终为 必需,以维护跨多个租户的安全性。
更改同意方法
要更改 OAuth 客户端的同意方法,请执行以下操作:
- 在 Administration 活动中心,转到 OAuth。
- 在 OAuth 客户端上,单击
并选择 更改同意方法。
- 选择 必需 或 受信任,然后单击 更改同意方法。
查看和复制 OAuth 配置
在 Administration 活动中心的 OAuth 部分,选择 查看 OAuth 配置 以显示您的 Qlik Cloud 租户的身份验证详细信息。这将显示包含 OAuth 端点和设置的代码段,以及您可以复制以在外部应用程序中使用的 URL。
您可以使用此配置将 Qlik Cloud 与第三方应用程序集成、自动化 API 访问或为嵌入式分析配置身份验证。
管理客户端密码
如果客户端密码被泄露或您的安全策略需要定期更新,您可以添加或删除密码。为避免停机,您可以添加多个客户端密码(最多 5 个),更新您的客户端应用程序,然后删除旧密码。
添加客户端密码
执行以下操作:
- 在 Administration 活动中心,转到 OAuth。
- 找到 OAuth 客户端。
- 单击
并选择 管理密码。
- 单击 生成新的客户端密码。
-
复制客户端密码和客户端 ID,并安全地存储它们。
信息注释您以后将无法访问客户端密码。 - 单击关闭。
删除客户端密码
执行以下操作:
- 在 Administration 活动中心,转到 OAuth。
- 找到 OAuth 客户端。
- 单击
并选择 管理密码。
- 单击客户端密码旁边的
。
- 单击关闭。
有关 OAuth 客户端的更多信息
后续步骤:构建 OAuth 客户端应用程序
在 Qlik Cloud 中注册 OAuth 客户端后,您可以构建 OAuth 客户端应用程序以访问 Qlik Cloud 内容。在您的应用程序中使用关联的客户端 ID 和客户端密码。
有关分步指南,请参阅 Qlik Developer Portal 的 OAuth 概述 部分中的教程。这些教程涵盖了如何使用流行的编程语言构建客户端应用程序。
组织级 OAuth 客户端
除了特定于租户的 OAuth 客户端之外,您还可以使用组织级 OAuth 客户端。作为服务帐户所有者 (SAO),您可以创建和管理这些客户端。组织级 OAuth 客户端提供对订阅中所有租户的租户信息的访问权限。
有关更多信息,请参阅 在 My Qlik 中管理 OAuth 客户端。