【问题标题】:Password Access with Multiple Instances多个实例的密码访问
【发布时间】:2023-04-07 00:29:01
【问题描述】:

我正在设计一个应用程序,它要求用户首先登录,然后访问多个安全网页。我计划将 AWS 与 AWS 负载均衡器一起使用,并希望该应用程序的多个 AWS 实例能够运行。在多个网页和多个实例中持久保存安全凭证的“最佳实践”是什么?用户将登录,然后浏览几个安全网页。我假设 AWS 负载均衡器将循环将每个 https 请求重定向到不同的服务器实例。每个实例如何知道用户已成功登录?另外,如何保护安全页面免受外部访问?平台将是 Linux、Java 和 Spring-boot。

【问题讨论】:

    标签: java spring amazon-web-services


    【解决方案1】:

    我认为 AWS 负载均衡器将循环重定向每个 https 请求到不同的服务器实例。

    这是默认的 ELB 行为,但您可以在 Elastic Load Balancer 上启用 sticky sessions 以将用户锁定到特定的后端服务器,此时存储在该服务器上的 HTTP 会话会跟踪用户的身份验证状态。

    每个实例如何知道用户已成功登录?

    除非您配置某种共享会话存储,否则它们不会。我更喜欢使用 Redis (ElastiCache) 作为共享会话存储。当然,如果您在 ELB 上启用粘性会话,这可能会阻止共享会话存储的需要。

    另外,我如何确保安全页面免受外部访问?这 平台将是 Linux、Java 和 Spring-boot。

    这并不是 AWS 的真正功能。您需要为您的应用程序添加安全性。查看Spring Security

    【讨论】:

    • 你好Mark,我想我可以使用用户IP地址作为key,应用唯一的安全授权作为value?如果用户没有注销,我可以使用 Redis 过期功能最终删除键值对。那是你的方法吗?
    • 不,我根本不会采用这种方法。当这个问题已经为您解决时,您正在尝试推出自己的安全系统。使用 IP 地址也是一个糟糕的主意,因为不能保证每个用户都有一个唯一的 IP。您需要考虑使用 Spring Security,并使用使用 Redis 作为其存储后端的 Tomcat 会话管理器。您不应该尝试自己管理用户会话。
    • 你好,马克,很好的意见。您能给我几个我应该查看的安全组件的名称吗? Spring 文档非常庞大。然而,它倾向于更多地关注过程而不是大图深入。我想了解感兴趣的组件并获得全局。
    猜你喜欢
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 2016-01-16
    相关资源
    最近更新 更多