亚马逊AWS官方博客

Amazon Quick Desktop 企业 SSO 实战

摘要:在企业环境中,Amazon Quick Desktop 应用强制要求通过 IdP(身份提供商)进行认证登录,不支持简单的用户名密码方式。然而很多企业客户并没有现成的 IdP 认证服务(如 Okta、Azure AD 等),这成为 Quick Desktop 部署的一大门槛。
为解决这一问题,本文介绍如何使用开源身份认证服务器 Keycloak 作为 IdP,通过 Amazon EC2 快速部署一套轻量级的 OIDC Provider,分别通过 IAM Federation 和 IAM Identity Center 两种模式为 Quick Desktop 配置企业级 SSO 登录。


一、背景介绍

在企业环境中,Amazon Quick Desktop 应用强制要求通过 IdP(身份提供商)进行认证登录,不支持简单的用户名密码方式。然而很多企业客户并没有现成的 IdP 认证服务(如 Okta、Azure AD 等),这成为 Quick Desktop 部署的一大门槛。

为解决这一问题,本文介绍如何使用开源身份认证服务器 Keycloak 作为 IdP,通过 Amazon EC2 快速部署一套轻量级的 OIDC Provider,分别通过 IAM FederationIAM Identity Center 两种模式为 Quick Desktop 配置企业级 SSO 登录。

本文档采用手动添加用户方式以降低配置复杂度。如果需要用户自助注册(Self-Provisioning),请参考:

Federate Amazon QuickSight access with open-source identity provider Keycloak

二、主要技术难点

Keycloak 公网可达性:亚马逊云科技后端需要通过公网 HTTPS 访问 Keycloak 的 JWKS URI 和 UserInfo Endpoint 验证 Token,因此 Keycloak 必须通过 Internet-facing ALB 暴露,且证书必须为 ACM 有效证书(非自签名)。

两种模式的技术选型:IAM Federation 模式配置简单,用户管理在 Keycloak 和 Quick 两侧同步完成;IAM Identity Center 模式更适合原来已经使用 亚马逊云科技IAM Identity Center 来管理用户的企业,但需要额外配置 TTI 和 IAM Identity Center 用户。

多处用户邮箱一致性:无论哪种模式,Keycloak 用户邮箱必须与 Quick/IAM Identity Center 中的邮箱完全一致(含大小写),否则登录时无法匹配。

Token 配置正确性:PKCE、offline_access scope、Refresh Token 等配置缺一不可,任何遗漏都会导致登录失败或 Session 频繁过期。

三、解决方案

针对以上挑战,我们提供完整的部署方案。整体分为四部分:

  • 公共配置:Keycloak 基础设施部署 + OIDC Client 配置(两种模式共用)
  • 模式 A — IAM Federation:配置简单,Quick 直接通过 Token email 匹配用户
  • 模式 B — IAM Identity Center:通过 TTI + IAM Identity Center 实现身份映射
  • 公共配置:Quick管理控制台配置

Quick 注册主页面,展示两种模式的入口:

[Quick Desktop 两种用户注册模式选择页面]

IAM Federation 模式注册流程:

[IAM Federation 模式架构]

IAM Identity Center 模式注册流程:

[IAM Identity Center 模式架构]

3.1 两种模式对比

对比项 IAM Federation 模式 IAM Identity Center 模式
配置复杂度 较简单 较复杂(需额外配置 TTI)
需要 TTI 不需要 需要
需要 IAM Identity Center 用户 不需要 需要手动添加
用户映射方式 Token email 直接匹配 Quick 用户 TTI + IAM Identity Center email 映射
新用户添加 管理员通过 Quick 控制台邀请 管理员先在 IAM Center 创建用户,再分发链接
适用场景 快速上线、简化管理 已使用亚马逊云科技 IAM Identity Center 管理用户的企业

四、具体方案实现

4.1 方案前提条件

项目 要求
亚马逊云科技账户 有效的 Amazon Quick 订阅(Enterprise 或 Standard Edition)
Home Region 必须为 us-east-1
Keycloak 已准备 EC2 实例(建议 t3.small 及以上,Amazon Linux 2023)
ALB 证书 ACM 有效公有证书(非自签名),域名 DNS 验证通过
DNS Keycloak 域名可被亚马逊云科技后端 DNS 解析(通过 ALB DNS 别名)

4.2 公共部分:Keycloak 基础设施部署

以下步骤为两种模式共用。在 Amazon EC2 上使用 Docker 部署 Keycloak,通过 ALB 暴露 HTTPS,使用 ACM 管理证书。

4.2.1 安装 Docker 并启动 Keycloak

# 安装 Docker
sudo yum update -y && sudo yum install docker -y
sudo systemctl start docker && sudo systemctl enable docker

# 启动 Keycloak
docker run -d --name keycloak -p 8080:8080 \
  -e KC_BOOTSTRAP_ADMIN_USERNAME=admin \
  -e KC_BOOTSTRAP_ADMIN_PASSWORD=[REDACTED_PASSWORD] \
  -e KC_PROXY_HEADERS=xforwarded \
  -e KC_HOSTNAME=keycloak.yourdomain.com \
  -e KC_HTTP_ENABLED=true \
  quay.io/keycloak/keycloak:26.2.4 start

4.2.2 配置 ALB + ACM 证书

  • ACM 申请公有证书,DNS 验证
  • 创建 Internet-facing ALB,HTTPS:443 关联 ACM 证书
  • Target Group: HTTP:8080 → Keycloak EC2
  • ALB 安全组: 入站 443 对 0.0.0.0/0 开放
  • EC2 安全组: 入站 8080 仅允许 ALB SG
  • DNS: keycloak.yourdomain.com → ALB

4.2.3 创建 Realm

创建名为 “quick” 的 Realm:

进入 quick realm:

4.2.4 创建 OIDC Client

4.2.5 启用 PKCE

4.2.6 配置 Redirect URIs

4.2.7 设置 offline_access 为 Default Scope

4.2.8 确认 Refresh Tokens

4.2.9 SSO Session 有效期

4.2.10 创建用户

根据对应模式邮箱创建用户,确保邮箱验证:

设置密码:

4.3 模式 A:IAM Federation(联邦认证)

IAM Federation 模式较为简洁:Quick 后端直接从 Token 的 email claim 匹配用户,无需经过 IAM Identity Center。

认证模式要求: Amazon Quick 账户认证模式需设置为 IAM Federation。

4.4 模式 B:IAM Identity Center

IAM Identity Center 模式通过 Trusted Token Issuer (TTI) 将 Keycloak Token 映射到 IAM Identity Center 用户,更适合原来已经使用亚马逊云科技IAM Identity Center 来管理用户的企业。

认证模式要求: Amazon Quick 账户认证模式需设置为 IAM Identity Center。

4.4.1 配置 Trusted Token Issuer (TTI)

在 IAM Identity Center 控制台创建 TTI,让亚马逊云科技 信任 Keycloak 颁发的 Token:

[IAM Identity Center 中配置 Trusted Token Issuer]

⚠️ IAM Identity Center 模式下,IAM Center User 需要手动添加。 如果希望实现Quick用户自助注册配置请参考:

Federate Amazon QuickSight access with open-source identity provider Keycloak

4.5 公共部分:Quick 管理控制台配置

⚠️ 重要说明:以下 Quick 管理控制台中的操作(创建扩展访问插件、配置 Keycloak 信息、用户设置扩展、下载 Desktop App 及登录方式)对两种模式(IAM Federation 和 IAM Identity Center)完全一致,无需区分模式分别操作。

4.5.1 进入 Quick 管理控制台

4.5.2 创建 Quick 扩展访问插件

管理员为整个 Quick Account 创建扩展访问插件:

4.5.3 配置 Keycloak 信息

具体参数参考:

https://keycloak.yourdomain.com/realms/quick/.well-known/openid-configuration

4.5.4 用户设置扩展

每个 Quick 用户设置扩展,调用 Quick Account 的扩展访问插件:

4.5.5 下载安装 Quick Desktop App

4.5.6 登录验证

登录过程先进入 Quick Account,然后跳转 Keycloak 验证:

验证成功,用户信息不再有 Monthly Usage 限制:

4.6 新用户添加方式

两种模式在添加新用户时操作流程不同:

4.6.1 IAM 联邦方式:管理员控制台邀请

管理员通过 Quick 管理控制台直接邀请新用户:

用户收到邀请邮件,接受邀请并完成注册:

4.6.2 IAM Identity Center 方式:IAM Center 创建用户 + 分发链接

管理员先在 IAM Identity Center 基于用户邮箱创建用户,然后分发 https://quicksight.aws.amazon.com/sn 给用户,用户登录对应 Quick Account 后进入用户注册流程:

五、总结

本文介绍了 Amazon Quick Desktop 通过 Keycloak 实现企业 SSO 的完整方案:

  • 公共配置:Keycloak 部署(Docker + ALB + ACM)+ OIDC Client 配置
  • 模式 A — IAM Federation:配置简单,用户在 Keycloak 和 Quick 两侧同步管理
  • 模式 B — IAM Identity Center:需配置 TTI,IAM Center User 需手动添加,适合已用 IAM Identity Center 的企业
  • Quick 管理控制台操作(扩展插件、Keycloak 配置、用户扩展、下载 App、登录)两种模式完全一致

核心注意事项

  • ALB 必须 Internet-facing 且 443 端口对 0.0.0.0/0 开放
  • ACM 证书必须为有效公有证书(非自签名)
  • 所有系统中用户邮箱必须完全一致(含大小写)
  • offline_access 必须在 Default Client Scope 中

➡️ 下一步行动:

Related Products:

  • Amazon IAM — 使用 AWS Identity and Access Management(IAM)安全地管理和扩展工作负载和劳动力访问,支持您在 AWS 中的灵活性和创新。
  • Amazon Quick — Amazon Quick 能解答您的问题,并使用代理式团队成员进行研究、业务洞察和自动化,将这些答案转化为行动
  • Amazon EC2 — 安全且可调整大小的计算容量,支持几乎所有工作负载
  • Amazon QuickSight — Amazon Quick Sight 在 Quick 中提供人工智能驱动的商业智能功能,将分散的数据转化为适用于所有人的战略洞察,使您能够更快速地做出决策,实现更好的业务成果。

相关文章:

六、引文链接

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。

本篇作者

董杰

西云数据解决方案架构师,曾就职于多家外企、知名民企,主要负责支持企业客户上云,专注于亚马逊云解决方案设计和技术咨询,15+年软件开发、项目交付、售前咨询等丰富的行业实践建议。


AWS 架构师中心:云端创新的引领者

探索 AWS 架构师中心,获取经实战验证的最佳实践与架构指南,助您高效构建安全、可靠的云上应用