amazon-web-services - 使用 AWS Cognito 保护 EC2 上托管的 Web 应用程序,而无需修改 Web 应用程序

标签 amazon-web-services authentication amazon-ec2 cloud amazon-cognito

我有一个 Web 应用程序托管在我拥有的 EC2 实例上。我没有编写 Web 应用程序,也没有它的源代码,但我可以运行它并允许通过 EC2 实例的公共(public) IP 和特定端口(例如 https://XX.XX.XX.XX:5000 )访问它。它通过重定向到该地址的域名(例如 https://resource.example.com )连接到 Route53。

我只希望有本地 friend 使用此 Web 应用程序(大约 5-20 个用户)。然而,我遇到了随机人偶然发现该域并搞乱网络应用程序的问题。

我想以某种方式保护它,最好使用 Cognito 等 AWS 服务。我不想将 IP 列入白名单,因为我可以预期我的 friend 会移动到不同的 WiFi 网络(可能在不同的城市或国家)并希望他们仍然可以访问。我没有太多的云开发经验,想要一种简单快速的方法。

应用程序流程将如下所示:用户尝试访问 https://XX.XX.XX.XX:5000https://resource.example.com 。用户尚未被允许访问,因为他们未经身份验证,并且会自动重定向到 Cognito 托管的 UI。然后他们登录(使用我提供给他们的帐户),并被重定向回 https://resource.example.com他们可以自由地使用网络应用程序。一段时间后,他们的身份验证 token 就会过期,他们将无法再访问 Web 应用程序。

有很多教程介绍如何对您拥有或可以自由修改的应用程序执行此操作,但是当您无法修改底层 Web 应用程序时是否可以执行此操作?例如,某种类型的服务监控与 EC2 实例之间的连接,它会自动检查身份验证,并在身份验证无效时重定向到 Cognito 托管的 UI。

最佳答案

我的两分钱:

  • 使用AWS Cognito User Pool管理您的用户注册/登录。 Cognito 用户池甚至可以支持社交媒体登录(Google、Facebook 等)以及 MFA,它提供了可自定义的登录 Web UI,因此您无需编写自己的登录页面代码。

  • 将当前流量路由(Route 53 -> EC2 实例)更改为 Route 53 -> Application Load Balancer ( authenticated with Cognito User Pool ) -> EC2 实例

注意:负载均衡器可能会产生 extra cost

关于amazon-web-services - 使用 AWS Cognito 保护 EC2 上托管的 Web 应用程序,而无需修改 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67846108/

相关文章:

authentication - 身份服务器问题 AuthenticationScheme : Bearer was challenged for a token obtained by client credentials. 如何找出底层错误?

node.js - 使用 passport.js 的微服务身份验证架构

ubuntu - 尝试在 ubuntu amazon EC2 实例上安装 gcc

amazon-web-services - 如何将 RDS 复制到 Elastic Beanstalk 克隆

amazon-web-services - 在哪里设置 aws 访问/ key 以使 kube-up.sh 在 Kubernetes (aws) 中正常工作

python - flask-ask 插槽总是被映射到 None

php - 在 AWS Elastic Beanstalk Multidocker 容器上使用数据库容器或 RDS 数据库

cakephp - CakeDC 用户插件 如何扩展它以能够自定义登录控制?

linux - 通过 SSH 连接到 EC2 实例时突然出现错误

javascript - stub 函数以返回 .promise() 可接受的内容