从 Amazon Connect 全球云呼叫中心服务 SSO 构建流程

3f482261c47deb74361baa172d5e968a.png

07abcd77f316eaafa9dbe7fa033d00cd.gif

点击上方【凌云驭势 重塑未来】

一起共赴年度科技盛宴!

Amazon Connect 是 Amazon 开发的全渠道云联络中心解决方案,能够提供 60 多个国家和地区的电话号码,所有基础设施都由 Amazon 维护,能根据客户的使用量需求动态扩容,无需签约购买许可、按照使用量计费的方式,能够让客户随时灵活调整坐席人数。

Amazon Connect 实例可以设置基于 SAML 2.0 的身份验证,企业用户可以基于 SAML 协议构建 SSO 模块,实现 CRM 与 Connect 的无缝权限对接。不同于直接通过 Connect CCP(Contact Control Panel)登陆(图1), SSO 用户首先向 IdP 进行身份验证。IdP 生成 SAML 断言(assertion),该断言将通过 Browser 发送给 IdP 信任的应用程序(SP),SP 读取用户 attributes 并将其映射到自己存储的用户  attributes。在 Connect 中,SP 限定的 SSO 认证 attributes 为用户登陆名(login)。联合认证通过后,前端跳转到 CCP 的中继链接,就可以访问 Connect 对应的服务(图2)。

ecb915e7994dde37fb12957e4a190309.jpeg

图1: CCP 登陆 Amazon Connect

7d4cd8a0e8fc03dc5119573ec37f02c5.jpeg

图2: SSO 登陆 Amazon Connect

e333843940de6536cb0e61fd863376b5.png

图3: Amazon Connect 用户名 attribute 与 Amazon IAM RoleSessionName 匹配,最终与 IdP 用户名 attributes 一致。

由于 IdP 认证通过后可以发送多个 SAML assertion,因此用户可以单次登录多个应用程序(SP)。搭建 SSO 模块后,用户可以非常方便地集成其他应用模块,SSO 也是亚马逊云科技的权限安全的最佳实践。

启动身份验证流的主要方式有2种:

1.IdP 启动流程:用户首先访问 IdP,然后提示用户进行身份验证, IdP 使用 agent 生成 SAML 断言,该断言发送给单个或者多个 SP,SP 验证断言将其映射到本地用户,然后会话可以跳转到 SP 服务界面。多个 SP 模块可以以这种方式同时预热,agent 通过中继链接可以快速跳转多个 SP 服务页面。

7736fcb58aac1e2a692f24e0c574f4c7.png

图4: IdP 启动流程

2.SP 启动流程,用户访问 SP,SP 返回用户未验证,Agent 随即请求 IdP,IdP 生成 SAML 断言,通过 agent 发送到 SP,启动会话。这种方式无需用户主动登陆 IdP,用户访问对应 SP 即可自动触发 IdP 验证流程。

1d0c860e9b7323f182a9137c082b8bbf.png

图5: SP 启动流程

在以下范例中我们展示第二种流程,使用 Mujina 作为 IdP 实现基于 SAML Federation 登陆 Connect CCP 的流程。Mujina 是基于 OpenSAML 的联合认证(IdP & SP)。开源 mock 解决方案(https://github.com/OpenConext/Mujina),优点是可以通过 REST API 动态增加与修改 attribute, 基于其开箱即用、易于调试的特性被广泛使用在各类联合认证的测试场景中。在生产场景,我们建议使用托管服务 Amazon SSO 以及亚马逊云科技的成熟合作伙伴解决方案。

首先,我们开启一台 EC2,安装并启动 IdP。这里我们使用 amazon linux corretto11-java-11镜像,并安装 mvn 版本3.8.4,amzn-lnx2-hvm-corretto11-java-11镜像是亚马逊官方托管的 amazon linux 2系统环境下开放 Java 开发工具包(OpenJDK)的免费、多平台、生产就绪型分发版。Corretto 提供长期支持,其中包括性能增强和安全修复。Corretto 经认证与 Java SE 标准兼容,并在 Amazon 内部用于许多生产服务。按照 Run the IdP 命令运行:

mvn clean install
cd mujina-idp
mvn spring-boot:run

完成后,看到命令行返回:

c9752b15bdcbf2e5f339602d7c95867e.png

表明 IdP 模块已经初始化。在实例的安全组 inbound 开放默认 IdP 8080端口,浏览器输入 http://:8080可以看到登陆界面。

363cbe0be1427dd41cfe347859615324.png

图6:  IdP 登陆参考界面,version 8.0.0

在 SP(Amazon)和 IdP 之间建立信任关系,通过 IAM 赋予 IdP 联合授权用户对应权限。信任规则由.xml 元数据文件确定。元数据文件格式如下图所示,其中:

entityID:IdP 在 SSO 中的唯一标识。

Location:IdP 服务器的 public ip,Mujina 默认 IdP 端口为8080。

2084a119579c974638364436e8a0fc26.png

图7: xml 原数据格式范例

在 IAM 服务中,建立新的 Identity providers,上传 xml 文件,IAM 接受后,在 Summary 中显示 Issuer URL, Valid until, Service location,确认信息正确无误后,进行 IAM 赋权。

ddb97f8e4ca54dad91152e5186f8b527.png

图8:  建立新的 Identity providers

然后新建对应角色,给予 connect:GetFederationToken 权限的 policy,修改 trust relationship 给上一步的 Identity providers。

a36c1d90ec1495a4337cf6fc5b19ad6a.png

图9:  新建对应角色

这时候,当我们再次登陆 IdP,再打开 Amazon 控制台,可以看到右上角用户名已经改为对应 role_name@account_id。说明已经在 SP(Amazon)和 IdP 之间建立信任关系。

Log out 这个临时用户,在拥有 Amazon  AmazonConnect_FullAccess  或者 adminAccess 权限的用户下启动 connect 实例,选择 SAML 2.0-based authentication。

07edf9e6037c631599f2ef98de63d560.png

图10:  启动 connect 实例

进入对应 connect 实例,在 user management 下新建相同 Login 的用户,或者通过 csv 批量上传与 IdP 用户列表一致的用户。

da393ff63b110df8cae095c52e52e4aa.png

图11: 新建 Connect 用户

参考 https://docs.aws.amazon.com/connect/latest/adminguide/configure-saml.html#destination-relay 配置中继链接,前端页面跳转。当看到如下界面时,说明 SSO 成功。 

b9f2a95d40e22d4b06b905e7c11d6df3.png

图12:  中继链接跳转

开发者模式可以看到,用户访问中继链接(RelayState)后,跳转 SAML 通过 SigV4 进行 Amazon 联合授权,最后跳转到 ccp-v2 外呼界面。

在这篇 blog 中,我们探讨企业级用户如何通过 SSO 进行联合认证登陆指定 Connect 实例 CCP。同时,亚马逊有托管 SSO 服务与第三方 SSO 合作伙伴提供企业级 SSO 解决方案对接云呼叫中心 Connect。如有需要,欢迎联系亚马逊云科技。

本篇作者

d20d34db3ecc83dd02886b585b95fdc8.png

赵安蓓

亚马逊云科技解决方案架构师,负责基于亚马逊云科技云平台的解决方案咨询和设计,机器学习 TFC 成员。在数据处理与建模领域有着丰富的实践经验,特别关注医疗领域的机器学习工程化与运用。

2022亚马逊云科技 re:Invent 全球大会

中国行现已开启!

👇👇👇点击下方图片即刻注册👇👇👇

627a1d747f2b4ddd1a68aab5ec317933.jpeg

2b7d30ef613d296ebf004eba314d6631.gif

84965832bdcbfc70fd068505e00702dc.gif

听说,点完下面4个按钮

就不会碰到bug了!

b13f811cab3d5be80454bab656b43903.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值