AWS 中国(宁夏)区域由西云数据运营 AWS 中国(北京)区域由光环新网运营 AWS 中国(宁夏)区域由西云数据运营 AWS 中国(北京)区域由光环新网运营 蒙维,AWS 解决方案架构师 无服务器应用的认证和授权解决方案
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
蒙维,AWS 解决方案架构师
无服务器应用的认证和授权解决方案
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
今天在线研讨会的主要内容
• 假定参会者都已了解 AWS 无服务器 API 架构(Amazon API Gateway, AWS
Lambda)• 将介绍并演示如何使用下列服务为您的无服务器 App 实现身份管理
• AWS Amplify
• Amazon Cognito 用户池• Amazon Cognito 身份池• Amazon API Gateway
• AWS Lambda
• AWS Identity and Access Management(IAM)
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
社交媒体和企业联合身份验证
Web 和移动 AppAmazon
Cognito
开发者只需要关注如何创造
出色的 App
让 Amazon Cognito 负责处理身份认证相关事宜
托管的用户目录
可自定义的内置登录 UI
AWS 安全凭证
标准格式令牌
Amazon Cognito 简介
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
Amazon Cognito: 不同身份管理场景
B2C B2B
B2E IoT 场景
企业用户目录
企业用户目录
SAML
企业用户目录
SAML
AWS IoT
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
邮件地址或电话号码验证
密码重置用户注册和用户登入 用户个人资料管理
多因子认证
使用 AWS Lambda 定制用户身份管理工作流
基于令牌的认证
Amazon Cognito 用户池—支持全面的用户身份管理工作流
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
分类 AWS Lambda 触发器 场景举例
自定义身份验证流程
定义身份验证质询 确定自定义身份验证流程中的下一个质询
创建身份验证质询 在自定义身份验证流程中创建一个质询
验证身份验证质询响应 确定用户提供的响应内容在自定义身份验证流程中是正确的
认证事件
身份认证前 增加自定义验证环节以接受或拒绝用户登入请求
身份认证后 记录事件日志用于自定义分析
令牌生成前 补充令牌内容或阻止令牌申请
注册
注册前 增加自定义验证环节以决定接受或拒绝用户注册请求
确认后 提供定制化欢迎消息或者记录事件日志用于自定义分析
用户迁移将用户从现有用户目录迁移到 Amazon Cognito 用户池并且保留用户原始登录密码不变
通知消息 定制消息 定制消息格式和本地化消息内容
使用 AWS Lambda 触发器定制用户身份管理工作流
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
访问令牌
• JSON Web Token
(JWT)
• 用于授权请求访问AWS资源和调用API
方法
• 包括:
o Oauth 范围
o Amazon Cognito
用户组
• 签发1小时后过期
身份令牌
• JSON Web Token
(JWT)
• 可直接用于身份认证
• 包括用户个人资料信息:
o 属性
o Amazon Cognito
用户组
• 签发1小时后过期
刷新令牌
• Opaque blob
• 用于再次获取新的身份令牌和访问令牌
• 过期时间可配置(1天-10年)
Amazon Cognito 用户池令牌简介
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
身份令牌数据格式
{"sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","aud": "xxxxxxxxxxxxexample","email_verified": true,"token_use": "id","auth_time": 1500009400,"iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_example","cognito:username": "janedoe","exp": 1500013000,"given_name": "Jane","iat": 1500009400,"email": "[email protected]"
}
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
访问令牌数据格式
{
"sub": "b90bdacc-bdf7-40e4-9857-375baf8ba563",
"cognito:groups": ["clientGroup"
],
"token_use": "access",
"scope": "openid profile email
https://api.spacefinder.com/photos.writehttps://api.spacefinder.com/photos.read",
"auth_time": 1530432407,
"iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_dpUQ7d0dw",
"exp": 1530436007,
"iat": 1530432407,
"version": 2,
"jti": "4e7dd129-5ed6-4c9f-a4a6-b71d60621998",
"client_id": "27f9n9mqdauqbd9irmm7i4d2el",
"username": "user1"}
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
AWS Amplify
• AWS Amplify 能够预置和管理 Web 和移动应用程序的后端。您只需选择身份验证、分析或离线数据同步等所需功能,AWS Amplify 会自动预置和管理为各项功能提供支持的 AWS 服务。
• 您可以通过 AWS Amplify 库和 UI 组件将这些功能集成到应用程序中。
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
Amazon Cognito 身份池
利用 Amazon Cognito 身份池获得 AWS 安全凭证
移动和 web APP
Amazon
DynamoDB
Amazon S3
Amazon API
Gateway
身份令牌
1
访问 AWS 资源3
AWS 安全凭证- 权限大小对应不同的 AWS
IAM 角色定义
2
• 利用经过认证用户的身份令牌去交换 AWS 安全凭证,用来访问 AWS 服务比如 Amazon S3 或Amazon DynamoDB
• 可以通过定义规则为不同的用户分配不同的AWS IAM角色,拥有不同大小的权限
• 利用身份池 ID 来唯一识别用户
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
使用 Amazon Cognito 用户池 使用 Amazon Cognito 身份池
集成 Amazon Cognito 的两种方法
• 帮你处理与不同 IdP 的交互
• 管理用户个人资料
• 提供符合 OpenID Connect 和OAuth2.0 的标准令牌
• 以每月活跃用户数计费
• 为用户提供访问 AWS 资源的安全凭证
• 支持使用规则为用户分配不同的 AWS IAM 角色
• 几乎没有成本
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
使用 JWT 令牌鉴权
• 解析 OAuth 2.0 定制资源服务器和权限范围• 从访问令牌中校验签名,时间戳和组/权限范围
• {• "sub": "b90bdacc-bdf7-40e4-9857-375baf8ba563",• "cognito:groups": [• "clientGroup"• ],• "token_use": "access",• "scope": "openid profile email• https://api.spacefinder.com/photos.write
https://api.spacefinder.com/photos.read",• "auth_time": 1530432407,• "iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_dpUQ7d0dw",• "exp": 1530436007,• "iat": 1530432407,• "version": 2,• "jti": "4e7dd129-5ed6-4c9f-a4a6-b71d60621998",• "client_id": "27f9n9mqdauqbd9irmm7i4d2el",• "username": "user1"• }
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
AWS 集成和认证
Amazon API Gateway AWS Application Load
Balancer
AWS Credentials
(任何 AWS 服务)
Amazon
Cognito
Tokens
Amazon
Cognito
Tokens
Amazon
Cognito
Tokens
Amazon
Cognito
Amazon API
Gateway
Amazon Cognito
Amazon
Cognito
Amazon
DynamoDB,
Amazon S3, etc.
Application Load
Balancer (ALB)
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
Amazon Cognito
用户池
定制身份提供商
AWS IAM 鉴权
AWS Lambda 鉴权
Amazon API Gateway:三种鉴权方式
Amazon Cognito
身份池
Amazon Cognito 鉴权
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
授权方式1:Amazon Cognito 用户池鉴权
Internet
移动App
合作伙伴服务
AWS Lambda
函数
Amazon EC2
上的接入点
Amazon
API
Gateway
Amazon
Cognito
Web站点
用户登录
内建的认证检查逻辑
OIDC 令牌
OIDC 令牌
任何可公开访问的接入
点
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
授权方式2:基于 AWS IAM 的鉴权
Internet
移动App
合作伙伴服务
AWS Lambda
函数
Amazon EC2
上的接入点
Amazon
API
Gateway
Amazon
Cognito
AWS IAM
AWS IAM 用户/
角色获取
版本4签名
Web站点
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
授权方式:定制 AWS Lambda 函数鉴权
Internet
移动App
Web 站点
合作伙伴服务
AWS Lambda
函数
策略缓存
Amazon EC2
上的接入点
任何可公开访问的接入
点
Amazon
API
Gateway
AWS Lambda 定制鉴权函数
OAuth 身份提供商
403
AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营
我们希望您喜欢今天的内容!也请帮助我们完成反馈问卷。
欲获取关于 AWS 的更多信息和技术内容,可以通过以下方式找到我们:
感谢参加 AWS 在线研讨会
微信订阅号:AWS 云计算(awschina)
新浪微博:https://www.weibo.com/amazonaws/
领英:https://www.linkedin.com/company/aws-china/
知乎:https://www.zhihu.com/org/aws-54/activities/
视频中心:http://aws.amazon.bokecc.com/
更多线上活动:https://aws.amazon.com/cn/about-aws/events/webinar/
微信服务号:AWS Builder 俱乐部(amazonaws)
抖音:亚马逊云计算(抖音号:266052872)