[SEO 副标题]
本指南演示如何使用 AWS 和 Okta 身份平台来实施安全且可扩展的一次性密码(OTP)交付解决方案。本指南支持多种语言和通信方法,并将特定于语言的消息模板存储在动态、可扩展的数据库中。这使您能够根据用户的首选语言和交付渠道(例如短信或语音呼叫)定制 OTP 消息。通过本指南,您可以实施可靠、灵活且安全的 OTP 交付方法,帮助您适应多样化的用户群。
注意:[免责声明]
架构图
[架构图描述]
第 1 步
用户在 Okta 上启动登录,系统会提示用户进行电话身份验证。用户选择短信或语音传送,以接收 OTP。Okta 的电话内联钩子被激活,创建 JSON Web 令牌(JWT)请求,以通过 Amazon API Gateway 传送 OTP。
第 2 步
AWS WAF 通过应用 AWS 管理的规则来阻止恶意流量,从而保护 API Gateway 端点。所有流量都通过 AWS WAF Web 访问控制列表(ACL)进行筛选,并且被视为安全的请求被允许传递到 API Gateway。
第 3 步
API Gateway 首先从 Okta 接收 JWT 请求。然后,它会调用自定义 AWS Lambda 函数,该函数充当授权方,在允许请求继续之前先验证 JWT 令牌。
第 4 步
Lambda 授权方负责验证 JWT 令牌的完整性和有效性。它会执行多项检查以确保令牌有效。
第 5 步
Lambda 授权方通过解码 JWT 令牌、使用 Okta 的公钥验证签名并检查到期时间来验证该令牌。
第 6 步
如果 JWT 令牌有效,Lambda 授权方将创建一个 AWS Identity and Access Management(IAM)策略,授予调用 API Gateway 的权限。
第 7 步
Lambda 授权方将 IAM 策略返回给 API Gateway。如果允许访问,则调用 API Gateway 并将请求转发到后端 Lambda 函数。
第 8 步
如果 Lambda 函数在处理用户请求时遇到错误或异常,它可能会将请求发送到 Amazon Simple Queue Service(Amazon SQS)死信队列以进行进一步调查和故障排除。
第 9 步
如果没有发现错误,Lambda 函数会联系 Amazon DynamoDB,根据用户的请求详细信息(例如他们的语言偏好以及他们对 SMS 或语音传送的选择)检索消息数据。
DynamoDB 表存储针对各种语言和通信方法量身定制的消息模板。Lambda 函数检索与用户请求详细信息匹配的相应消息模板。
第 10 步
Lambda 函数检索消息数据并使用它来为用户创建个性化消息。该消息包含 OTP 身份验证代码。根据用户选择的通信方式,该函数会相应地格式化消息。
第 11 步
AWS 终端用户消息发送服务随后将消息发送给用户。对于 SMS,它会直接向用户的手机发送短信。对于语音传送,它会将文本转换为语音消息并通过电话传送。
开始使用
Well-Architected 支柱
当您在云中构建系统时,AWS Well-Architected Framework 可以帮助您了解所做决策的利弊。框架的六大支柱使您能够学习设计和操作可靠、安全、高效、经济高效且可持续的系统的架构最佳实践。使用 AWS 管理控制台中免费提供的 AWS Well-Architected Tool,您可以通过回答每个支柱的一组问题,根据这些最佳实践来检查您的工作负载。
上面的架构图是按照 Well-Architected 最佳实践创建的解决方案示例。要做到完全的良好架构,您应该遵循尽可能多的 Well-Architected 最佳实践。
-
卓越运营
本指南使用 Lambda、API Gateway 和 Amazon SQS 来实施无服务器方法,该方法可提供可扩展性、灵活性和易于维护性。例如,Lambda 会根据完成任务所需的最小内存和 CPU 量来调整其函数的大小。如果一个函数遇到错误或异常,Lambda 会将失败事件发送到 Amazon SQS 死信队列,以便进一步调查和故障排除。此外,Amazon CloudWatch 还提供关键监控,以主动检测和解决问题,从而支持卓越运营。
-
安全性
本指南通过实施强大的访问控制和数据保护机制来增强安全性。AWS WAF 通过应用托管规则来阻止恶意流量,从而保护 API Gateway 端点。自定义 Lambda 函数充当授权方,在允许请求继续之前验证 JWT。该授权方会解码 JWT(使用 Okta 的公钥来验证签名)并检查到期时间,以确认令牌的有效性。 IAM 使用最低权限原则管理访问权限,以确保只有授权用户和服务才能访问资源。此外,AWS Key Management Service(AWS KMS)加密敏感数据(例如 OTP),并加密 CloudWatch 日志以保护记录信息的机密性。
-
可靠性
本指南通过分布式工作负载、错误处理机制、持久数据存储和高可用性消息消息收发服务支持可靠性。它将 Lambda 函数分布在多个可用区(AZ)中,帮助您避免由 AZ 中断导致的单点故障风险。Amazon SQS 死信队列通过处理错误和重试提供可靠的消息传递,并使您能够调查任何失败的消息处理。此外,DynamoDB 为用户首选项和消息模板提供了高可用性和持久性的数据存储。最后,AWS 最终用户消息发送服务通过为 SMS 和语音通信提供高度可用且可扩展的消息传递服务来增强可靠性。
-
性能效率
本指南使用无服务器服务,因此您可以快速检索和处理数据,而无需手动管理基础设施。Lambda 会根据您的工作负载自动扩展并适当调整其功能以实现高效的资源利用,而 DynamoDB 则有助于快速高效地检索数据。AWS 最终用户消息发送服务可按需将文本转换为语音以进行语音通话。
-
成本优化
本指南通过使用按需、即用即付服务来最大限度地降低成本。DynamoDB 提供灵活的定价模式,其按需容量模式可根据工作负载量进行调整,从而帮助您降低成本。对于 Lambda,您只需为您使用的计算时间付费,其可扩展性可帮助您优化成本。
-
可持续性
本指南使用可扩展的按需服务来减少云工作负载对环境的影响并最大限度地减少浪费。Lambda 可按需自动扩展,帮助您避免使用闲置资源。此外,DynamoDB 还提供了随工作负载扩展的按需模式,从而实现高效的资源利用。这两项服务均符合最大程度地减少硬件使用和能耗的最佳实践。
相关内容
免责声明
示例代码;软件库;命令行工具;概念验证;模板;或其他相关技术(包括由我方人员提供的任何前述项)作为 AWS 内容按照《AWS 客户协议》或您与 AWS 之间的相关书面协议(以适用者为准)向您提供。您不应将这些 AWS 内容用在您的生产账户中,或用于生产或其他关键数据。您负责根据特定质量控制规程和标准测试、保护和优化 AWS 内容,例如示例代码,以使其适合生产级应用。部署 AWS 内容可能会因创建或使用 AWS 可收费资源(例如,运行 Amazon EC2 实例或使用 Amazon S3 存储)而产生 AWS 费用。
本指南中提及第三方服务或组织并不意味着 Amazon 或 AWS 与第三方之间存在认可、赞助或从属关系。AWS 的指导是一个技术起点,您可以在部署架构时自定义与第三方服务的集成。