无服务器应用的认证和授权解决方案Webinar+2019/... · aws...

23
AWS 中国(宁夏)区域由西云数据运营 AWS 中国(北京)区域由光环新网运营 AWS 中国(宁夏)区域由西云数据运营 AWS 中国(北京)区域由光环新网运营 蒙维,AWS 解决方案架构师 无服务器应用的认证和授权解决方案

Transcript of 无服务器应用的认证和授权解决方案Webinar+2019/... · 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 简介

Google

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

Amazon Cognito: 不同身份管理场景

B2C B2B

B2E IoT 场景

企业用户目录

企业用户目录

SAML

企业用户目录

SAML

AWS IoT

Google

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 中国(北京)区域由光环新网运营

可自定义的内置登录 UI

• 上传您自己的企业形象Logo并调整CSS属性以适合您企业的风格和品牌

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 中国(北京)区域由光环新网运营

不同的鉴权场景

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 中国(宁夏)区域由西云数据运营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)