我们有两个不同的Web应用程序,包含不同的服务器,堆栈等。让我们在 host.example.com 中调用一个主机,在 client.example.com调用另一个客户端。
我们希望我们的用户登录Host,并将他们的凭据和其他一些信息(真实姓名,电子邮件地址,DOB等)传递给客户。这样做的最佳方式是什么?用户在主机上查看页面时,可以通过Javascript请求访问客户端。
标准
我们想到的两个选项:
Client for Host上传递数据的API。粗略地,在登录时,主机在客户端上获取登录名,并传递会话ID以及数据。
存储数据是签名或加密的cookie。从最近关于Django签名cookie的讨论来看,这看起来很难做到。
答案 0 :(得分:1)
您也可以使用这些解决方案的混合体。如果登录生成了散列/定时SessionID并将其与IP / userid一起存储在一个小会话数据库中,则可以将此数据存储在域级cookie中并将其直接传递。然后,客户端将首次针对db验证sessionid / timestamp / ip / etc以验证立即身份验证,然后以处理用户和会话的快捷方式继续进行,但是它希望处理它。如果你将时间戳期望保持在相当短的时间(10秒?),那么可以使用和使用它,然后可以使用数据库cron作业来修剪错误或未使用的条目。
答案 1 :(得分:0)
这有点粗略,但您可以在客户端上执行重定向到页面,并将相关数据包含为GET变量。如果这样做,您应该编码/加密数据。客户端将获取数据,设置相关的会话信息,并继续进行。
答案 2 :(得分:0)
也许通过分享会话状态? Here's an example使用默认的SQL Server会话提供程序并调整GetTempAppId sproc以提供相同的值,因此使存储和检索看起来好像来自单个应用程序。
答案 3 :(得分:0)
我认为最好的选择是第一个:
客户端主机传递的API 数据。大致上,登录时,主机 在客户端上获取登录/并传递 会话ID以及数据。
也许您可以使用OAUTH来验证请求。有an open source implementation for App Engine from google和另一个here。
答案 4 :(得分:0)
您能否使用Michael Bray的想法,但用Ajax代替重定向?在服务器1上,将数据发送到服务器2。服务器2,存储临时数据供以后使用,服务器1,向客户端和服务器2发送一个密钥,客户端使用密钥从服务器2用Ajax获取数据。
答案 5 :(得分:-1)
没有简单的方法来做好这件事。有很多方法可以做到这一点,但没有一种方法可以同时实现简单和安全。您可以在主机上考虑cgi / fastcgi / web服务技术。