我有以下设置:
Site1 (Core) at Core.example.com
Site2 (Work1) at Work1.example.com
Site3 (Work2) at Work2.example.com
等...我只会在讨论中使用Work1
,但问题适用于所有Work
网站
我们的想法是Core
用于登录,付款,帐户管理等,而工作网站提供的功能完全不同,无法证明单独的CI实例/ Dbs /等。
这相对较好,因为Core
可以设置由其他网站提取的Cookie。
我遇到的问题是,我希望允许例如Work1
代表用户/作为用户拨打Core
- 例如更新用户帐户详细信息,获取用户可用的服务列表等
我目前正试图通过CURL这样做。如果我在客户端向Core
发出的HTTP请求中读取Work1
会话cookie,并将其注入从Work1
到Core
的CURL请求,Core
不接受它作为有效的会话cookie。我不确定这是由于不同的IP地址(客户端与Work1
)或其他原因造成的。
不幸的是,我需要Work1
拥有自己的数据库,因此共享数据库不是一个可行的选择。也就是说,我在网站上使用了相同的加密密钥,因此可以根据任何网站的要求解密/解析cookie(或其他任何内容)。
有人可以建议我如何说服Core
来自Worker1
的用户Core
会话Cookie的请求实际上来自用户?
答案 0 :(得分:0)
我最终能够通过读取cookie并将其注入curl请求来解决这个问题。我还必须处理通过CURL检索的会话cookie更新,重新包装它们并将它们传递回客户端。
我还扩展了IP验证以检查会话IP是否为:当前请求的客户端IP或者是我的Work1站点的IP地址,并且HTTPS请求具有MySite-OriginalIp
标头(附加到所有我的CURL请求)并且该值与会话匹配。
还有许多其他安全增强功能,调整和健全性检查,以便在不影响安全性的情况下以稳健可靠的方式实现这一目标 - 此处需要详细说明。