亚马逊AWS官方博客

使用 Cognito User Pools 快速构建企业级 SSO 单点登录中心

背景:

随着企业对创新速度的要求越来越高,越来越多的企业希望让开发团队关注于业务本身,而不是繁琐的重复功能开发,本文可以帮助您使用 AWS Cognito User Pools 快速构建一个企业级SSO 单点登录中心。

一、创建基础的后端运行环境

下载 cognito-wildrydes-website-1 代码(地址:https://github.com/caoheyang/cognito-wildrydes-website-1),然后使用 ServerlessBackend.yaml 通过 CloudFormation 创建后端基础运行环境。

二、SSO

2.1 创建用户池

1.在 AWS 管理控制台中,选择服务,然后在安全性、身份和合规性下选择 Cognito。

2.选择”管理用户池”。

3.选择控制台右上角的”创建用户池”。

4.为用户池(例如 WilDryDes)提供一个名称。

5.选择”逐步介绍设置“以配置用户池选项。

6.保持 ”用户名“ 为选中状态,但另外选择 “还允许使用经验证的电子邮件地址进行登录” 和 “还允许使用经验证的电话号码进行登录”.

7.保留所有其他项的默认值,一直点击下一步创建用户池。

2.2 配置 HostUI 用于实现单点登录

1、点击“应用程序集成-域名”,创建域名。

2.3 创建应用程序客户端

1、点击“常规设置-应用程序客户端”,点击“创建应用程序客户端“。例如:“wildrydes-web-app1 ”,去掉“生成客户端密钥”前面的复选框选中状态去,其他项保持默认值即可。

2、分别将”应用程序客户端 ID“的值和”池 ID“复制出来放到一个 txt 文件中,后面将要用到。

2.4 为应用程序设置应用程序提供商和 OAuth2.0

1、点击“应用程序集成-应用程序客户端设置”,参照如图进行配置,我们选择 “Cognito User Pool” 作为身份提供商。

2、请注意:“回调 URL ” 和 “注销URL”,需要与前端系统的端口保持一致,在本示例中,请保证端口的一致性。

3、打开 src/amplify-config.js 和存储【”应用程序客户端 ID“的值和”池 ID“】的文件进行配置,目前只配置标注项即可。

4、 “npm start” 启动应用程序,点击“Sign In”,将会跳转到 HostUI 托管的登录/注册页面,第一次需要先注册,注册成功登陆后访问 http://localhost:3000/profile 可以看到注册邮箱,表示用户登陆成功。

2.5 测试SSO效果-新应用程序接入

请拉取 cognito-wildrydes-website-2 代码(地址:https://github.com/caoheyang/cognito-wildrydes-website-2),重复 2.3 – 2.4 步骤,配置 cognito-wildrydes-website-2 的 src/amplify-config.js 文件信息。

请注意:cognito-wildrydes-website-2 我们配置的端口为 4000,所以“应用程序集成-应用程序客户端设置” 中的“回调URL” 和 “注销URL” 为:“http://localhost:4000 ”。

此时点击 cognito-wildrydes-website-2 的 “Sign In” 不在需要登录,将会自动跳转到 Hosted UI 域名地址通过SSO登陆成功,然后访问 http://localhost:4000/profile 可以看到用户登陆信息。

参考链接:

https://auth.serverlessworkshops.io/user_auth/user_pool.html

本篇作者

曹赫洋

AWS 专业服务团队 DevOps 顾问。主要负责 DevSecOps 咨询和技术实施。在 DevSecOps 加速企业数字化转型方面领域拥有多年经验,对公有云、DevSecOps、基于云原生的微服务架构、敏捷加速研发效能等有深入的研究和热情。