首页 > 解决方案 > 将 AWS Cognito 与 AWS SNS 和过期推送令牌一起使用的最佳实践

问题描述

我有一个应用程序(Java Spring 后端 + iOS/Android 本机前端),它使用 AWS Cognito 进行身份验证,使用 AWS SNS 向设备发送推送通知。客户端应用程序当前将特定于设备的推送令牌(FCM、APNS)传递给后端,后端通知 SNS。

我们正在努力找出处理用户退出或暂时不使用移动应用程序以及过期/禁用这些推送令牌的最佳方法。Cognito 在令牌过期或用户退出时似乎没有任何类型的触发器或通知。这会导致用户在注销或访问/刷新令牌过期后仍会收到应用推送。

我正在寻找关于在这里做什么的建议和最佳实践。我们考虑的一些选择是在单独的调用中通知我们的后端,将所有设备管理移到那里,或者甚至将所有 Cognito 隐藏在我们自己的后端调用之后,但也许有更好的方法。

标签: amazon-web-servicesamazon-cognitoamazon-sns

解决方案


上个月他们发布了刷新令牌撤销,这是一种撤销刷新令牌的方法,并且之前由该刷新令牌发出的所有访问令牌都变得无效

这是为新用户池启用的,但我相信在您的情况下,您需要手动启用它(例如,您在发布该功能之前创建了用户池)

Cognito 在令牌过期或用户退出时似乎没有任何类型的触发器或通知。

你在这里是正确的,但是,如果你GlobalSignOut在你的应用程序中使用 API,你可以通过 CloudTrail 或 EventBridge跟踪它并触发 lambda 对事件的某些事情

我们考虑的一些选项是在单独的调用中通知我们的后端,将所有设备管理移到那里,或者甚至将所有 Cognito 隐藏在我们自己的后端调用后面

我在这两种情况下都工作过,虽然外观提供了很大的灵活性,但如果您提供社交登录,设置整个 oidc 流程很烦人,

在我的项目中,我通常使用 cognito 作为用户目录来生成唯一的用户 ID 并与其他 aws 服务集成。

就像 DynamoDB 一样,具有基于 Cognito 用户 ID 的项目级控制,这很方便:

https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_items.html https://aws.amazon.com/blogs/mobile/building-fine-grained-authorization-using-amazon-cognito-user -池组/

使创建和管理用户设备令牌等变得容易

但也许有更好的方法。

希望永远不会死


推荐阅读