创建和管理 OAuth 客户端
OAuth 是用于授权和委派的安全协议。它允许第三方应用程序访问 API 资源,而无需披露最终用户凭据。OAuth 客户端请求授权码,将其交换为访问令牌,并使用令牌通过 API 访问 Qlik Cloud 内容。
OAuth 客户端类型
OAuth 客户端是一个网页应用程序或软件,它代表用户请求访问 Qlik Cloud 中的资源。OAuth 定义了两种客户端类型 - 公共客户端和机密客户端 - 以确保应用程序(客户端)和授权服务器 (Qlik Cloud) 之间的安全授权。
Qlik Cloud 支持传统 Web(服务器端)应用程序的机密客户端,以及使用特定授权流程的本机和单页应用程序的公共客户端。
有关 OAuth 2.0 客户端类型的官方规范,请参阅 RFC 6749 第 2.1 部分:OAuth 2.0 客户端类型。
公共客户端
公共客户端是不使用客户端密钥的应用程序,因为它们无法维护所需凭据的机密性。在 Qlik Cloud 中,这些包括前端应用程序,如带有嵌入式分析功能的单页面应用程序 (SPA),或需要用户认证的 Qlik Sense 中的自定义可视化扩展。
机密客户端
机密客户端可以安全地存储客户端 ID 和客户端密钥,并使用它们向授权服务器进行身份验证。这些客户端可以访问受保护的资源,因为它们拥有客户端密钥。
示例:一个具有安全后端的网页应用程序,该后端与 Qlik Cloud API 交互以管理用户访问或编排数据刷新任务。
OAuth 授权流程
Qlik 支持两种授权流(授权类型):
-
授权代码流:适用于机密客户端。
-
带有代码交换证明密钥 (PKCE) 的授权代码流:适用于公共客户端。
授权代码流
此流程由源代码不公开的服务器端应用程序使用。它涉及用授权码交换访问令牌,将客户端密钥用于身份验证。使用此流的网页应用程序必须是服务器端,因为客户端密钥在令牌交换期间传递给授权服务器。
有关授权代码流的更多信息,请参阅 OAuth 2.0 官方文档:授权代码流。
使用 PKCE 的授权代码流
本地和单页应用程序无法安全地存储客户端密钥,因为可以在浏览器中反编译或检查它们的源代码。PKCE 要求使用验证码来获取访问令牌,从而增强了安全性。
有关使用 PKCE 进行授权的更多信息,请参阅 OAuth 2.0 官方文档:带有代码交换验证密钥 (PKCE) 的授权代码流。
OAuth 作用域和权限
OAuth 作用域定义了授予 OAuth 客户端应用程序的访问级别。例如,访问令牌可以允许完全访问资源,也可以限制为只读访问。在 Qlik Cloud 中,作用域控制客户端对可用功能和资源的访问。没有作用域,客户端就无法访问任何资源。
可用的 OAuth 作用域
下表列出了可用的作用域及其相关权限:
范围 | 权限 |
---|---|
user_default | 完全访问您的帐户和内容 |
admin_classic |
对租户的完全管理员访问权限 另请参阅: 部署和管理 Qlik Cloud 信息注释不支持单页应用程序或本机客户端类型。
|
admin.apps |
读取和管理租户中的所有应用程序 另请参阅: 管理应用程序 |
|
导出租户中的所有应用程序 另请参阅: 导出应用程序 |
|
读取租户中的所有应用程序 |
admin.automations |
读取和管理租户中的所有自动化 另请参阅: 管理自动化 |
|
读取租户中的所有自动化 |
admin.spaces |
读取和管理租户中的所有空间 另请参阅: 管理空间 |
|
读取租户中的所有空间 |
应用程序 |
阅读和管理您的应用程序 另请参阅: 管理应用程序 |
|
导出您的应用程序 另请参阅: 导出应用程序 |
|
阅读您的应用程序 |
自动化 |
阅读和管理您的自动化 另请参阅: 管理自动化 |
|
读取您的自动化 |
automl-experiments | 阅读并管理 ML 实验 |
automl-deployments | 阅读并管理 ML 部署 |
identity.email:read |
读取您的电子邮件地址 另请参阅: Qlik Cloud 中的身份提供者 |
identity.name:read |
读取您的全名 |
identity.picture:read |
读取您的个人资料图片 另请参阅: Qlik Cloud 中的身份提供者 |
identity.subject:read |
读取用户主题标识符 |
spaces.data |
阅读和管理您的数据空间 另请参阅: 管理空间 |
|
读取您的数据空间 |
spaces.managed |
阅读并管理您的托管空间 另请参阅: 管理空间 |
|
阅读您的托管空间 |
spaces.shared |
阅读和管理您的共享空间 另请参阅: 管理空间 |
|
阅读您的共享空间 |
offline_access |
脱机时访问资源 信息注释不支持单页应用程序客户端类型。
|
创建 OAuth 客户端
租户管理员在 OAuth 页面的 Administration 活动中心管理 OAuth 客户端。使用OAuth客户端,您可以将客户端应用程序与 Qlik Cloud 集成,以安全地访问资源。
对 OAuth 客户端的限制
以下限制适用:
-
每个客户端最多可使用 5 个重定向 URL。
-
每个客户端最多允许 5 个源。
-
每个客户端最多可拥有 5 个客户端密钥。
-
每个租户最多可拥有 200 个 OAuth 客户端。
创建 OAuth 客户端的步骤
执行以下操作:
-
在 Administration 活动中心中,转到 OAuth。
-
单击新建。
-
选择客户端类型:
-
机密客户端的网页。
-
单页应用程序或公共客户端的原生应用程序。
-
-
在对话框中,输入 OAuth 客户端的名称。
-
可选择添加描述。
-
通过滚动或使用搜索字段选择任何可用范围。
提示注释使用全部和选定按钮查看所有作用域或仅查看选定作用域。 -
为 OAuth 客户端应用程序输入一个或多个重定向 URL(最多 5 个)。然后单击添加将重定向 URL 添加至许可名单。
-
重定向 URL 是授权服务器在成功验证并授予客户端应用程序权限后发送用户浏览器的位置。例如,https://www.exampleapp.com/oauth/callback,其中 /oauth/callback 处理来自 OAuth 提供者的身份验证回调。
-
只有当用户的 URL 在允许的重定向 URL 列表中时,Qlik Cloud 才会在成功授权后将用户重定向回应用程序。
-
URL 必须以 https:// 开头,除非域为 localhost,在该情况下,其可以 http:// 开头。本机应用程序还可以使用特定于应用程序的链接格式,exampleapp://。
-
-
对于网页或单页应用程序客户端类型,指定一个或多个允许的来源(最多 5 个)。
-
只有当 URL 被添加至允许的来源列表时,才会授予对应用程序的访问权限。
-
-
对于网页客户端类型,您可以启用以下选项之一,实现无需用户交互的自动化系统访问:
-
允许机器对机器 (M2M):实现系统间通信,无需用户参与。
-
允许 M2M 用户冒充:允许应用程序代表用户进行身份验证,在身份验证过程中扮演用户。
-
-
单击创建。
-
单击复制到剪贴板保存客户端 ID 和客户端密码,以供以后使用。安全地存储客户端密钥。
信息注释公共客户端没有客户端密钥。 -
单击完成。
针对特定用例的 OAuth 客户端
有关 OAuth 客户端用例,请参考以下资源:
-
Qlik 开发者门户上的 OAuth 概述:OAuth 用例和不同 OAuth 类型概述。
-
为 Microsoft Excel 的 Qlik 加载项创建 OAuth 客户端:设置 OAuth 客户端,以便安装 Microsoft Excel 的 Qlik 插件。
-
为应用程序内容的匿名嵌入创建 OAuth 客户端:创建 OAuth 客户端以允许匿名访问嵌入式应用程序内容。
为 Microsoft Excel 的 Qlik 加载项创建 OAuth 客户端
需要 OAuth 客户端配置才能安装 Microsoft Excel 的 Qlik 外接程序。报告开发人员使用该加载项来准备报告模板,这些模板控制 Qlik Sense 应用程序中表格报告的输出。
为了使 OAuth 在加载项中工作,需要使用下面所示的确切配置来配置 OAuth 客户端。
执行以下操作:
-
在 Administration 活动中心的 Qlik Cloud 中,转到 OAuth。
-
单击新建。
-
在客户端类型下拉菜单中,选择单页应用程序。将显示更多字段。
-
插入名称。描述是可选的。
-
至少,选中复选框以包括 user_default 范围。您可以在配置中包括其他作用域,但如果没有 user_default,安装将无法进行。
有关每个可用范围的完整描述,请参阅可用的 OAuth 作用域。
-
在添加重定向 URL 字段中,插入租户的 URL,后跟固定字符串:/office-add-ins/oAuthLoginSuccess.html
结果应如下所示:https://YourServer/office-add-ins/oAuthLoginSuccess.html
-
单击添加。
-
在添加允许的来源字段中,插入租户 URL,然后单击添加。
-
单击创建。
-
此时会出现复制客户端 ID 窗口。您可以选择将客户端 ID 复制到剪贴板,或者单击完成关闭窗口。
创建 OAuth 客户端后,从 Administration 活动中心获取到更新的清单 XML 文件的链接。转到设置页面,然后导航到 Administration 活动中心中的共享和报告 > Excel 加载项。使用此链接可部署和安装加载项。
有关生成清单文件以及部署和安装加载项的更多信息,请参阅:
为应用程序内容的匿名嵌入创建 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 客户端应用程序以访问 Qlik Cloud
在向 Qlik Cloud 注册了 OAuth 客户端之后,可以在自己的 OAuth 客户端应用程序中使用关联的客户端 ID 和客户端秘钥。
有关分步指导,请参阅 Qlik 开发者门户的 OAuth 概览部分中的教程。这些教程涵盖了如何使用流行的编程语言构建客户端应用程序。