amazon-web-services - 使用 Cognito 防止多个同时登录

标签 amazon-web-services react-native authentication aws-lambda amazon-cognito

我们有使用 Cognito 进行身份验证的 React Native 应用程序。我们希望防止同一用户 ID 从多个设备同时登录。

我们希望我们可以为此使用 Cognito 预身份验证触发器。不幸的是,我们似乎不能只调用globalSignOut。对于用户来说,因为这不会使已发布且当前处于事件状态的 token 无效(请参阅 https://github.com/amazon-archives/amazon-cognito-identity-js/issues/21#issuecomment-331472144 )。

另一个想法是如果用户在其他地方登录,则拒绝登录。但是我们看不到一种可靠的方法来判断用户是否已经登录。我们可以查看是否有为该用户颁发的有效 token ,但不能查看它们当前是否与事件 session 相关联。

我们还考虑维护我们自己的事件 session 数据库,但没有注销触发器,因此我们不知道何时从数据库中删除 session 。

最佳答案

您可以使用 token 认证系统,

为每次登录发出一个全新的 token ,并检查可用的 token 。

如果有任何 token 可供用户使用,这意味着他/她已登录其他设备,对于这种情况,您可以提示用户 您已登录其他设备。您确定要从该设备注销吗? 单击是后,您可以清除该用户的所有 token 。并发行全新的代币。

自动登出 :该 token 应该在整个后端传递,即在每个 API 调用 token 的 header 中都应该存在......并且应该在后端执行任何操作之前进行检查。如果 token 不可用,则抛出 401 .如果有任何 API 抛出 ,则在您的应用中401 那么这意味着用户是未经授权 并且应该被注销。

或者

您的应用程序应该正在监听一个套接字,该套接字在收到相同的消息时会响应注销。因此,每当您的用户登录时,将通过套接字传递注销消息,并且具有某些 token ID 或唯一 ID 的适当设备将收到该消息,并将从所有其他设备注销特定用户。

或者

有一个通知接收器,它将用于在必要时与套接字相同的注销。

关于amazon-web-services - 使用 Cognito 防止多个同时登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55303282/

相关文章:

android - 在 Android 上使用 Java AWS SDK 与 Android AWS SDK

node.js - 使用 Node JS 登录 AWS cognito

javascript - 使用 React Native 打包器将文件作为字符串加载

javascript - 如何在 onPress 中传递按钮的 id - React Native

rest - 我应该通过 HTTP Header 还是 Post body 作为 JSON 将凭据传递给 REST Api?

c# - 在 Amazon Linux 上安装 mono 时出错

android - 在 Android/iOS 上带有开关(开/关)的持久通知消息?

security - 无需第三方工具即可在 Elasticsearch 中进行用户身份验证

php - 是否有可能通过 Microsoft App 注册构建通用登录系统?

amazon-web-services - AWS IAM 策略中的变量资源名称