3

我在 PHP 中做一些事情,我必须读取另一个会话实例的会话值。例子

浏览器1:$_SESSION['value']="user1";

Browser2: $_SESSION['value']="user2";

Browser1 需要从某个请求中获取“user2”值。该请求还将包括 cookie(key, value)。

我怎样才能做到这一点?

谢谢,瓦尔

4

3 回答 3

4

1 个处理 SSO(单点登录)的 PHP 服务器,另一个是在 ruby​​ on rails(ROR)上运行的 Web 应用程序

[...]

但我们需要实现新功能,其中 ROR 服务器需要代表浏览器在 SSO 提交身份验证请求

您的 SSO 模型不需要以这种方式工作。事实上,它不应该。

SSO 通常是这样工作的。我使用非标准名称是因为我累了,不记得他们的正式名称是什么:

  • 最终用户:使用需要登录的浏览器的家伙。
  • 页面服务器:最终用户尝试登录的站点。
  • 身份验证服务器:实际拥有最终用户数据的主版本的站点。
  1. 最终用户从页面服务器请求页面。
  2. Page Server 检查最终用户的现有登录状态。如果最终用户未登录,页面服务器会将最终用户重定向到具有唯一令牌的身份验证服务器。
  3. 身份验证服务器使用唯一令牌从最终用户获取请求。它会做任何需要做的事情来让用户登录。
  4. 用户登录后,身份验证服务器会将最终用户发送回页面服务器,并使用另一个不同的唯一令牌
  5. 最终用户向页面服务器发出的请求导致页面服务器向身份验证服务器发出请求。该请求包括原始唯一令牌另一个不同的唯一令牌
  6. Authentication Server 向 Page Server 响应有关用户的信息,如果令牌无效,则返回错误消息。一旦检索到用户数据,身份验证服务器就会使令牌失效。(这可以防止请求重播。顺便说一下,您应该在整个过程中使用 SSL。)
  7. 页面服务器将用户登录并存储它需要的有关最终用户的任何信息。

页面服务器在任何时候都不会“冒充”最终用户,并且页面服务器或身份验证服务器在任何时候都不需要接触彼此的最终用户会话数据。

页面服务器在任何时候都不会获得用户凭据的副本。 最终用户的实际身份验证仅发生在身份验证服务器上。在身份验证服务器使用正确的请求令牌将用户退回后,页面服务器请求有关用户的数据。

You can make this process more complex, if you'd like. For example, the URL that the Authentication Server bounces the user back to might need to be customizable. You can include the return URL with the End User request to the Authentication Server, but if you do so, you should sign it (using, say, HMAC) to ensure that some malicious cretin doesn't manipulate it on the way.

Clear as mud?

于 2010-07-26T07:18:40.053 回答
1

您将需要使用创建某种数据存储系统,该系统可供应用程序的所有用户访问。Cookie 和会话仅限于当前用户/浏览器。

数据库或文件是您需要使用的示例。

于 2010-07-26T06:14:15.393 回答
1

默认会话存储是文件。您可以像访问任何其他文件一样访问每个文件。会话数据经过编码,必须先解码才能使用。在评论中有许多解决方案

  • session_decode- session_decode — 从字符串中解码会话数据
于 2010-07-26T06:53:27.917 回答