最后更新于
最后更新于
Amazon Cognito 是一项以开发人员为中心且注重安全性的客户身份与访问管理(CIAM)服务,能够简化在移动和 Web 应用程序中添加用户注册、登录和访问控制的流程。Cognito 是一项高可用性服务,支持多种使用场景,从管理用户身份验证和授权,到启用对您的 API 和工作负载的安全访问。它是一项托管服务,可以作为应用程序的身份提供商(IdP),能够扩展到数百万用户,提供高级安全功能,并支持与第三方 IdP 的身份联合。
Amazon Cognito 其中的一个功能就是支持 , 用于机器对机器(M2M)授权。随着您的 M2M 使用案例的扩展,拥有适当的监控、优化令牌发放以及了解安全最佳实践和注意事项变得非常重要。应用程序客户端在令牌仍然有效且未过期的情况下,本地缓存并重用访问令牌是一种最佳实践。您可以自定义发放的令牌的有效时长,因此确保该时间范围符合您的安全要求非常重要。如果在客户端级别无法缓存和重用访问令牌,或者无法强制执行,那么将您的机器对机器(M2M)使用案例与使用 的 REST API 代理集成结合起来,可以实现 。通过使用 API Gateway 缓存,您可以优化 M2M 授权中访问令牌的请求和响应。这减少了对 Cognito 获取访问令牌的冗余调用,从而提高了您的 M2M 使用案例的整体性能、可用性和安全性。
在本文中,我们探讨了如何监控、优化和保护 Amazon Cognito 机器对机器(M2M)授权的策略。首先,您将了解一些有效的监控技术,以便跟踪您的使用情况;然后,我们将深入探讨使用 API Gateway 和令牌缓存的优化策略;最后,我们将介绍安全最佳实践和注意事项,以增强您的 M2M 使用案例的安全性。让我们深入研究,发现如何充分利用您的 Amazon Cognito M2M 实施。
Amazon Cognito 使用 来处理机器对机器(M2M)授权。Cognito 用户池可以发放客户端 ID 和客户端密钥,允许您的服务请求一个符合 JSON Web Token(JWT)标准的访问令牌,以访问受保护的资源。图 1 展示了应用程序客户端如何使用客户端凭证授权流程向 Amazon Cognito 请求访问令牌。
客户端凭证授权流程(图 1)包括以下步骤:
在验证请求后,Cognito 将返回一个符合 JSON Web Token(JWT)标准的访问令牌。
客户端可以使用 Cognito 发放的访问令牌,向下游资源服务器发起后续请求。
资源服务器从 Cognito 用户池获取 JSON Web Key Set(JWKS)。JWKS 包含用户池的公钥,应使用这些公钥来验证令牌签名。
在验证访问令牌并授权应用程序客户端后,请求的资源将返回给应用程序客户端。
也可以按照账户查看每月的费用情况,如图3所示:
参考资料
应用程序客户端向 Amazon Cognito 用户池的 /token
端点发起 HTTP POST 请求(有关更多信息,请参阅《 》),该请求提供一个包含客户端 ID 和客户端密钥的授权头,以及包含授权类型、客户端 ID 和作用域的请求参数。
资源服务器使用公钥验证访问令牌的签名是否有效(证明令牌未被篡改)。资源服务器还需要验证令牌是否未过期,以及是否存在所需的声明和值,包括作用域。资源服务器应使用 来验证访问令牌是否有效。
您可以在《 .》中了解 Amazon Cognito 支持的客户端凭证授权和其他认证流程的 OAuth 2.0 支持。
M2M功能是收费的,
为了更好地了解您现有的 Amazon Cognito 使用情况,您可以使用成本和使用情况仪表板操作解决方案 的安全性 标签页。CUDOS 仪表板是 的一部分,这是一个开源框架,为 AWS 客户提供组织级别的可操作见解和优化机会。如图 2 所示,CUDOS 仪表板的安全性标签页提供了可视化图表,显示了按使用类型划分的 Amazon Cognito 成本和支出,以及在豁免期结束后,按日粒度计算的 M2M 应用程序客户端和令牌请求的预计成本。这种按日细分的方式使您能够跟踪您的成本优化工作趋势
您可以查看图4中显示的用户池的每个资源ID的使用情况和支出。这种资源级别的细粒度数据使您能够识别支出最高的用户池,并据此优先考虑使用和成本管理的工作。该仪表板的交互式演示是可用的。更多信息,请参阅。
AWS Blog -