本Keycloak SSO与Duo 2FA集成到vCloud教程是基于实验室的测试的第一手资料,用于将带有 Duo 2FA 的 Keycloak SSO 配置到 VMware 的 vCloud Director 中。所有测试和文档均由 phoenixNAP 自己的 Joe Benga 完成。Joe 是我们值得信赖的云、基础设施和网络技术企业架构师。
我越来越喜欢 Keycloak 作为一种产品。我发现它是一个强大的源身份和访问管理解决方案 (AMS)。
我希望能够在我的实验室中将 Keycloak 用于 VMware 的 vCloud Director (vCD),并测试 Active Directory (AD) 与双因素身份验证 (2FA) 支持的集成。
如何将Keycloak SSO与Duo 2FA集成到vCloud?在这个第一手资料中,我列出了我在实验室环境中采取的步骤,以在组织级别提供与 Keycloak 的安全断言标记语言 (SAML) 集成。此外,我还解释了我如何为前端门户提供 Duo Security 2FA。
与往常一样,这些只是基本步骤。请牢记贵公司的安全和最佳实践。
Keycloak
对于这个实验,我们很幸运,Keycloak 有一个预先构建的 docker 包来快速启动一切。
通过一些简单的命令,我能够在 Centos 7 虚拟机 (VM) 上启动并运行核心产品。在这一点上,我决定不是独立运行所有内容,而是使用 Postgres 容器支持它。对于你的实验,你可以决定自己的实验室需要什么,下面的信息链接中提供了不同的选项。我添加了颜色编码来显示命令是如何相互关联的。
完整信息:https://hub.docker.com/r/jboss/keycloak/
先决条件:Docker CE、防火墙设置(如果需要)
- 为 Database 和 Keycloak 容器创建共享用户网络
docker network create keycloak-network
- 启动 DB Container(可选,我使用 Postgres)
docker run -d --name postgres --net keycloak-network -e POSTGRES_DB=keycloak -e POSTGRES_USER=keycloak -e POSTGRES_PASSWORD=password postgres
- 启动钥匙斗篷
docker run -p 8080:8080 --name keycloak --net keycloak-network -e KEYCLOAK_USER=username -e KEYCLOAK_PASSWORD=password jboss/keycloak
- 完成这些步骤后,你应该能够登录 Keycloak(用户名和密码是你在绿色文本中定义的内容)
http://ip_addr:8080/auth/admin/
注意:对于生产用途,你需要考虑使用安全的秘密存储服务来处理传递给容器的凭据。
Keycloak SSO与Duo 2FA集成到vCloud教程:Keycloak vCloud Director 配置
- 根据 vCloud Org 的名称创建新领域
选择 Master 旁边的下拉箭头,然后选择 Add Realm。 注意:如果你在创建领域后不打算使用 SSL,请导航到登录选项卡并将需要 SSL设置 为无 - 在 Keycloak 中,创建一个本地用户以用作测试。(稍后,我们将利用 Active Directory 用户。)在左侧窗格中的 Realm 下导航到 Manage > Users。在右侧窗格中选择 添加用户
- 输入用户的信息。确保包含电子邮件地址,因为我们将在此日志中指定电子邮件作为名称 ID 格式。然后选择保存
- 为用户创建密码。导航到凭据选项卡。输入并确认新密码并取消选择 Temporary。然后点击 重置密码
- 现在我们有了你的领域和用户,我们将需要获取你组织的元数据。登录你的组织。导航到左窗格中设置 > 联合下的管理, 然后选择元数据链接。下载
spring_saml_metadata.xml
文件。该文件将为我们提供可以轻松导入 Keycloak 客户端设置的证书和配置文件
- 在 Keycloak 中,导航到配置 > 客户端下的左侧窗格,然后 在右侧窗格中 选择 创建
- 单击“ 选择文件” 并导入
spring_saml_metadata.xml
刚刚下载的文件。选择 保存 - 导航到 安装选项卡 和 格式选项:选择 SAML 元数据 IDPSSODescriptor,然后复制或下载对话框中显示的文本
- 在 vCD 中,在“管理”下导航 。 然后在左窗格 设置 > 联合中 选择使用 SAML 身份提供者,然后 从上面复制或上传 SAML 元数据 IDPSSODescriptor信息。然后点击应用。 注意:根据你的网络和设置方式,你可能需要手动调整元数据 XML 中的 IP 信息
- 导入 Keycloak 用户。在右侧窗格中的 成员 > 用户下。选择 导入用户图标。然后输入我们上面创建的用户的电子邮件地址并选择所需的 vCD 角色。 注意:在此步骤中,我还将包含稍后将使用的 Active Directory 用户电子邮件。
- 登录 vCloud Director 组织,我们将被重定向到 Keycloak Realm 登录屏幕。
如何将Keycloak SSO与Duo 2FA集成到vCloud?现在,我们的 Identity Manager 应用程序为我们的 vCloud Director 门户提供身份验证。接下来,我们将通过 Duo 代理与此设置下的 Active Directory 同步,并展示如何利用 2FA。我还将展示如何向任何用户添加 OTP 以快速利用 Google 身份验证。
将 Duo 集成到 Keycloak 中
先决条件:
- Active Directory 已在运行
- Duo Auth 代理正在运行 (https://duo.com/docs/authproxy-overview) 并连接到 Active Directory
注意:我的 Duo 代理配置
- 在左侧窗格中的 Realm 下,导航到 Configure > User Federation。在右侧窗格中添加一个 LDAP 提供程序。
- 设置你的 编辑模式: 供应商:Active Directory(这是由于我的 Duo 代理连接到 Win2012 AD)、 连接 URL、 用户 DN、 身份验证类型、 绑定 DN、 绑定凭据、 连接搜索范围:子树(除非你在相同的级别),缓存策略:无缓存(我们希望请求每次请求都命中代理)
- 选择保存,然后选择同步:所有用户
- 如果你没有预先添加 Duo 用户,请立即添加;重复步骤 14。
- 在 vCD 登录屏幕中,使用利用 Duo 的后备 AD 帐户的电子邮件。请注意,登录屏幕不会显示任何等待 2FA 批准的提示。在你批准 2FA 硬件设备之前,屏幕只会出现卡住状态。
Keycloak SSO与Duo 2FA集成到vCloud教程:添加一次性密码 (OTP)
使用此过程可快速添加 OTP。
- 在左侧窗格中的 Realm 下,导航到 Configure > Authentication。选择 OTP 策略并配置你的设置。 注意:你可能需要调整前瞻窗口以适应服务器上不匹配的时间设置。
- 在左窗格中,导航到 管理 > 用户 并选择我们在步骤 6 中创建的用户 。
- 在 Detail 选项卡下,在 Required User Actions 配置中选择 Configure OTP,然后选择 Save
- 如何将Keycloak SSO与Duo 2FA集成到vCloud?使用此用户登录到 vCD。在我们可以访问 vCloud Director 之前,我们需要设置一个 2FA 身份验证器。这可以从下面显示的屏幕中完成。
- 你可以利用任何 OTP 应用程序,例如 Duo 或 Google Authenticator。验证后,你将被定向到你的 VCD 组织。
下次登录时,你将看到以下提示:
从应用程序输入你的代码,你就可以开始了。