注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
将 Rocket.Chat 与身份域集成以实现单点登录
简介
Rocket.Chat 是一个安全且高度可定制的开源通信平台,适用于具有复杂安全性和隐私问题的组织。Rocket.Chat 提供对用户数据和对话的完全控制。该平台支持原生应用、与第三方应用无缝集成、跨渠道协作、基于安全断言标记语言 (SAML) 的单点登录 (SSO) 以及使用 API 的配置控制。
Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 是一个容器,可用于管理用户和角色,联合和预配用户,通过 Oracle SSO 配置实现安全的应用程序集成,以及进行基于 SAML/OAuth 的身份提供者 (IdP) 管理。
在本教程中,我们将自动安装 Rocket.Chat,并将 OCI IAM 集成为 SSO 的 IdP。
目标
-
使用基于 Terraform 的堆栈创建以下资源。
- 密钥库和硬件安全模块 (Keystore and Hardware Security Module,HSM) 保护的密钥。
- 证书和证书颁发机构 (CA)。
- 用于托管 Rocket.Chat 的 OCI 计算实例。
- 用于安全访问 Rocket.Chat 的 OCI 负载平衡器。
-
在计算实例上自动部署 Rocket.Chat,并在其上添加已创建的负载平衡器。
-
为 OCI IAM 设置 Rocket.Chat 并创建基于 SAML 的 IdP。
-
测试 OCI IAM 与 Rocket.Chat 之间的 SSO 流。
先决条件
-
活动的 OCI 订阅。
-
身份域及其管理员账户。
-
熟悉 OCI IAM 和 Terraform。
-
现有 VCN 和公共子网。
-
为入站流量打开了以下端口的安全列表。
类型 源端口 源 CIDR 目标端口 协议 说明 入站 全部 0.0.0.0/0 22 TCP SSH 入站 全部 0.0.0.0/0 3000 TCP 对于 Rocket.Chat 服务器 入站 全部 0.0.0.0/0 443 TCP 标准 HTTPS 端口 入站 全部 0.0.0.0/0 80 TCP 端口的 TCP 流量:80
任务 1:部署堆栈以安装 Rocket.Chat,并使用自动化 Terraform 堆栈创建 SAML 应用程序
可以使用不同的方法部署 Rocket.Chat。在本教程中,我们使用了使用 Docker 和 Docker 编写进行部署选项。有关详细信息,请参阅部署 Rocket.Chat 。
为了简化 Rocket.Chat 的安装,我们创建了一个 Terraform 自动化堆栈。此堆栈将:
- 创建 VM.Standard.E2.1 配置的主机 Linux 盒。
- 在其中安装 Rocket.Chat。
- 通过 Internet 创建密钥库、受 HSM 保护的密钥、证书颁发机构和用于安全套接字层 (Secure Sockets Layer,SSL) 通信的证书。
- 部署负载平衡器并对其进行配置以通过 SSL 访问 Rocket.Chat。
- 在现有身份域下创建 SAML 应用程序。
注:请确保在执行链接的堆栈之前检查要创建的资源的服务限制。有关更多信息,请参见IAM With Identity Domains Limits 。
-
从以下位置下载 Rocket.Chat 完整堆栈:Full_Stack_Rocket.Chat.zip 。
下载 Rocket.Chat 全栈 zip 文件后,解压缩该文件,并将
-rchat.pem
文件的内容替换为私钥的相应内容。注意:使用 OCI 控制台中的 OCI 资源管理器来部署堆栈,以避免出现任何故障。
-
以管理员用户身份登录到 OCI 控制台,导航到 Developer Services ,然后在 Resource Manager 下单击 Stacks 。
-
选择区间,然后单击创建堆栈。在堆栈配置部分中,选择在步骤 1 中下载的堆栈 zip 文件以部署堆栈,然后单击下一步。
-
在配置变量页中,输入创建计算实例和其他资源所需的详细信息,然后单击下一步。
注:要创建计算实例和负载平衡器,您需要具有公共连接的现有 VCN。
-
在复查页中,复查提供的详细信息,然后单击创建。
-
在堆栈详细信息页中,单击计划。您将获得成功输出。
-
在堆栈详细信息页中,单击应用。您将获得成功输出。
-
成功执行堆栈后,您可以在 IAM 域中找到附加到托管 Rocket.Chat 的计算实例和 SAML 应用程序的负载平衡器。
注:堆栈执行可能需要大约 40 分钟。等待作业成功。
任务 2:设置 Rocket.Chat 管理帐户
在此任务中,我们将更新本地系统上的 hosts 文件,然后验证部署的资源。
对于 Windows:C:\Windows\System32\Drivers\etc\hosts
。
对于 Linux:/etc/hosts
Public IP Address of Load Balancer your-domain-name.com
访问 Rocket.Chat,网址为 https://your-domain-name.com:443
,您将被重定向到设置页面。
注:确保管理员密码安全,在 Rocket.Chat 中创建 SAML IdP 时需要此密码。
任务 3:在 Rocket.Chat 中为单点登录创建 SAML IdP
-
登录到 Rocket.Chat 实例,导航到工作区和设置。
-
在设置窗口中,输入 SAML ,然后单击打开。
-
在连接页中,选择启用。输入以下详细信息,然后单击保存更改。如果提示输入管理员密码,请输入密码。
-
定制提供程序:输入
idcs
。 -
更新自定义入口点:输入您的自定义入口点。例如,
https://idcs-xxxx.identity.oraclecloud.com/fed/v1/idp/sso
。 -
IDP SLO 重定向 URL:输入 IdP SLO 重定向 URL。例如,
https://idcs-xxxx.identity.oraclecloud.com/fed/v1/idp/slo
。 -
自定义发布者:输入自定义发布者。例如,
https://your-domain-name.com/_saml/metadata/idcs
。 -
定制证书:从使用堆栈创建的 SAML 应用程序下载签名证书并复制内容。
注意:排除 BEGIN CERTIFICATE 和 END CERTIFICATE 行。
-
公共证书内容:复制证书的整个内容。
-
Signature Validation Type(签名验证类型):选择 Validate Assertion Signature(验证断言签名)。
注:使用相同的定制提供程序静态值,否则 SSO 可能因在任务 1 中创建的 SAML 应用程序中引用而失败。
-
-
在一般信息页的用户界面部分下,更新按钮文本和其他详细信息(如果需要更改),然后单击保存更改。
任务 4:使用 OCI IAM 测试 Rocket.Chat 的 SSO
-
打开浏览器并输入 Rocket.Chat
https://demo.rocketchat.com:443
的 URL。 -
此时将显示 OCI IAM 身份域登录页面。使用以前创建的用户的用户名和密码。
-
验证成功后,用户将重定向到 Rocket.Chat 主页。
注:您应该在 OCI IAM 和 Rocket.Chat 中创建具有相同电子邮件地址的公用用户。
使用 OCI IAM 的 Rocket.Chat SSO 的常见故障排除方案
-
确保在域、域、设置和会话设置下启用了允许跨源资源共享 (CORS) 。
-
如果加载 Rocket.Chat 实例需要时间,您可以尝试通过 SSH 连接到实例,然后使用以下命令重新启动 Docker。
docker compose down docker compose up -d
相关链接
确认
- 作者 — Chetan Soni(云解决方案工程师)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Integrate Rocket.Chat with Identity Domains for Single Sign-On
G12061-03
August 2024