我正在 PHP 中做一些事情,我必须读取另一个会话实例的会话值。
例子
浏览器1:
$_SESSION['value']="user1";
浏览器2:
$_SESSION['value']="user2";
Browser1 需要从特定请求中获取“user2”值。该请求还将包含 cookie(key, value)。
我怎样才能做到这一点?
谢谢,
瓦埃尔
1 个处理 SSO(单点登录)的 PHP 服务器,另一个是在 ruby on Rails(ROR)上运行的 Web 应用程序
[...]
但我们需要实现新功能,其中 ROR 服务器需要代表浏览器在 SSO 提交身份验证请求
您的 SSO 模型不需要以这种方式工作。事实上,不应该。
SSO 通常是这样工作的。我使用非标准名称是因为我累了并且不记得他们的正式名称是什么:
- 最终用户:使用需要登录的浏览器的人。
- 页面服务器:最终用户尝试登录的站点。
- 身份验证服务器:实际拥有最终用户数据主版本的站点。
- 最终用户从页面服务器请求页面。
- 页面服务器检查最终用户的现有登录状态。如果最终用户未登录,页面服务器会将最终用户重定向到身份验证服务器独特的代币.
- 身份验证服务器从最终用户获取请求独特的代币。它会做任何需要做的事情来让用户登录。
- 用户登录后,身份验证服务器将最终用户发送回页面服务器另一个不同的、独特的令牌.
- 最终用户向页面服务器发出的请求导致页面服务器向身份验证服务器发出请求。该请求包括原始独特的代币和另一个不同的、独特的令牌.
- 身份验证服务器使用有关用户的信息或错误消息(如果令牌无效)来响应页面服务器。一旦检索到用户数据,身份验证服务器就会使令牌失效。 (这可以防止请求重放。顺便说一句,您应该在整个过程中使用 SSL。)
- 页面服务器使用户登录并存储所需的有关最终用户的任何信息。
页面服务器绝不会“冒充”最终用户,并且页面服务器或身份验证服务器在任何时候都不需要接触每个人最终用户会话数据。
页面服务器在任何时候都不会获得用户凭据的副本。最终用户的实际身份验证仅发生在身份验证服务器上。在身份验证服务器使用正确的请求令牌退回用户后,页面服务器请求有关用户的数据。
如果您愿意,您可以使这个过程变得更加复杂。例如,身份验证服务器将用户退回的 URL 可能需要自定义。您可以将返回 URL 包含在最终用户向身份验证服务器发出的请求中,但如果您这样做,则应该对其进行签名(例如使用 HMAC),以确保某些恶意白痴不会在途中对其进行操作。
清澈如泥?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)