实现用户访问多个 Play 实例
Implementing user access to multiple Play instances
我的应用程序具有以下特征:
- 这是为许多公司提供的在线服务。每个公司都使用专用的 Play for Scala (Netty) 应用服务器。
- 每个应用程序服务器访问专用的 MySql 数据库。
- 在每个数据库中,用户的密码都是用MD5存储的。
- 要登录,用户需要在网页上输入公司代码、用户名和密码。或者,用户可以直接转到其公司网页,在那里他们将仅输入用户 ID 和密码。
这些是我的想法:我可以实现一个 Node.js 应用服务器,它将登录重定向到将验证用户密码的每个 Play 应用服务器。我是不是太离谱了?
这是您可以做到的一种方法:
- 用户将他们的登录信息输入到 Node.js 服务器上的表单中。
- Node.js 服务器收到 POST 请求并向相应的播放服务器发出 HTTP(S) 请求。
- Play 服务器收到请求,并通过一个操作验证登录信息,向 Node.js 服务器返回一个令牌。
- Node.js 服务器通过重定向到正确的 Play 服务器响应原始 POST,包括重定向中的令牌 URL。
- Play 服务器收到请求,验证令牌并让用户登录。
免责声明:
这里有很多安全问题 - Node.js-Play 服务器通信和传递令牌需要安全进行。思考:随机数、加密、挑战等。我不是专家,所以我没有就如何保护每个阶段提出具体建议,但我知道我上面给出的设计肯定需要更多工作才能使其适当安全.您需要阅读有关如何执行此操作的信息,或者查看现有的单点登录体系结构、oauth 等,或者询问一些与安全相关的特定问题。
此外,使用 md5s 作为密码也不是好的做法。使用带有盐的更强的哈希算法。请参阅 http://john.cuppi.net/migrate-from-md5-to-bcrypt-password-hashes/ 了解如何在不中断的情况下进行迁移。
我的应用程序具有以下特征:
- 这是为许多公司提供的在线服务。每个公司都使用专用的 Play for Scala (Netty) 应用服务器。
- 每个应用程序服务器访问专用的 MySql 数据库。
- 在每个数据库中,用户的密码都是用MD5存储的。
- 要登录,用户需要在网页上输入公司代码、用户名和密码。或者,用户可以直接转到其公司网页,在那里他们将仅输入用户 ID 和密码。
这些是我的想法:我可以实现一个 Node.js 应用服务器,它将登录重定向到将验证用户密码的每个 Play 应用服务器。我是不是太离谱了?
这是您可以做到的一种方法:
- 用户将他们的登录信息输入到 Node.js 服务器上的表单中。
- Node.js 服务器收到 POST 请求并向相应的播放服务器发出 HTTP(S) 请求。
- Play 服务器收到请求,并通过一个操作验证登录信息,向 Node.js 服务器返回一个令牌。
- Node.js 服务器通过重定向到正确的 Play 服务器响应原始 POST,包括重定向中的令牌 URL。
- Play 服务器收到请求,验证令牌并让用户登录。
免责声明:
这里有很多安全问题 - Node.js-Play 服务器通信和传递令牌需要安全进行。思考:随机数、加密、挑战等。我不是专家,所以我没有就如何保护每个阶段提出具体建议,但我知道我上面给出的设计肯定需要更多工作才能使其适当安全.您需要阅读有关如何执行此操作的信息,或者查看现有的单点登录体系结构、oauth 等,或者询问一些与安全相关的特定问题。
此外,使用 md5s 作为密码也不是好的做法。使用带有盐的更强的哈希算法。请参阅 http://john.cuppi.net/migrate-from-md5-to-bcrypt-password-hashes/ 了解如何在不中断的情况下进行迁移。