【问题标题】:Implementing user access to multiple Play instances实现用户对多个 Play 实例的访问
【发布时间】:2017-11-25 05:07:38
【问题描述】:

我有一个具有以下特征的应用程序:

  • 这是为许多公司提供的在线服务。每家公司都使用专用的 Play for Scala (Netty) 应用服务器。
  • 每个应用服务器都访问一个专用的 MySql 数据库。
  • 在每个数据库中,用户的密码都使用 MD5 存储。
  • 要登录,用户需要在网页上输入公司代码、用户名和密码。或者,用户可以直接访问其公司网页,在那里他们将只输入用户 ID 和密码。

这些是我的想法:我可以实现一个 Node.js 应用服务器,它将登录重定向到每个 Play 应用服务器,在那里验证用户密码。我是不是太离谱了?

【问题讨论】:

  • 我可以提供给你的是,尽量不要使用 MD5 来散列你的用户密码,试试bcryptjs 之类的东西
  • 为什么不能所有公司都使用同一个服务器?
  • @Robert Udah 因为我不希望这些公司在系统资源上竞争

标签: node.js scala playframework devops playframework-2.5


【解决方案1】:

这是一种方法:

  1. 用户将他们的登录信息输入到 Node.js 服务器上的表单中。
  2. Node.js 服务器接收到 POST 请求并向对应的 Play 服务器发出 HTTP(S) 请求。
  3. 播放服务器接收到请求,操作验证登录信息,将令牌返回给 Node.js 服务器。
  4. Node.js 服务器响应原始 POST 并重定向到正确的 Play 服务器,包括重定向 URL 中的令牌。
  5. Play 服务器接收请求,验证令牌并将用户登录。

免责声明:

这里有很多安全问题 - Node.js-Play 服务器通信和传递令牌需要安全地完成。想一想:随机数、加密、挑战等。我不是专家,所以我没有就如何保护每个阶段提出具体建议,但我知道我上面给出的设计肯定需要更多的工作才能使其正确安全.您需要阅读有关如何执行此操作的信息,或者查看现有的单点登录架构、oauth 等,或者询问一些特定的安全相关问题。

另外,使用 md5s 作为密码也不是好的做法。使用更强大的哈希算法和盐。请参阅 http://john.cuppi.net/migrate-from-md5-to-bcrypt-password-hashes/,了解如何在不中断的情况下进行迁移。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-08
    • 2016-03-23
    • 2023-04-07
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多