实现对多个Play实例的用户访问

时间:2017-11-24 16:12:51

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

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

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

这些是我的想法:我可以实现一个Node.js应用程序服务器,该服务器将登录重定向到将验证用户密码的每个Play应用程序服务器。我离开了吗?

1 个答案:

答案 0 :(得分:1)

这是你可以做到的一种方式:

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

    这里发生了很多安全问题 - Node.js-Play服务器通信并传递令牌需要安全地完成。想想:nonce,加密,挑战等等。我不是专家所以我没有就如何保证每个阶段提出具体的建议,但我知道我上面给出的设计肯定需要更多努力使其安全。您将要了解如何执行此操作,或者查看现有的单点登录体系结构,oauth等,或许可以询问一些特定的安全相关问题。

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