免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4928 | 回复: 8
打印 上一主题 下一主题

file_get_contents()遭遇cookie该怎么办? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-30 00:34 |只看该作者 |倒序浏览
我的表达能力不好,代码说话吧

http://app1.aaa.com/ajaxlgoin.php
  1. <?php
  2. $url = 'http://sso.bbb.com/checklogin.php?username='.$_GET['username'].'&password'.$_GET['password'].'&sign=******';
  3. $content = @file_get_contents($url);
  4. if($contents) {
  5.     //解码$contents.....
  6.     //设置cookie
  7.     //exit('ok')给ajax脚本
  8. } else {
  9.     //...........
  10. }
  11. ?>
复制代码
http://sso.bbb.com/checklogin.php
  1. <?php
  2. //处理变量
  3. //设置cookie
  4. //输出信息
  5. ?>
复制代码
前提是:
1、应用服务和通行证不是同一个域;
2、应用服务有一个ajax登陆的功能;

由于ajax的xmlHttprequest不能跨域,所以用ajaxlgoin.php做了一个"代理"来取sso服务器的返回信息,
现在的问题是,可以正常取到返回信息,但是sso针对本身无法设置cookie。

请问大家要怎么解决?

论坛徽章:
0
2 [报告]
发表于 2008-01-30 10:21 |只看该作者
为什么sso要设置自己的cookie?
sso有直接的页面需要用户来访问吗?
如果是的话,强制用户从app1上 跳转 过来,跳转页以post方式发给sso,然后sso再设置自己的cookie如何?

论坛徽章:
0
3 [报告]
发表于 2008-01-30 10:37 |只看该作者
因为修改密码等操作是在sso上进行的,强制用户从app1上 跳转过来,那不是sso也要信任app1了?
这样的话通行证就是双向的了。
不知道yahoo或163的通行证是怎么弄的?session?

论坛徽章:
0
4 [报告]
发表于 2008-01-30 11:52 |只看该作者
他们都是能过get方式的sid加密串过去的.然后在服务器端解密.这需要相当安全的算法.

论坛徽章:
0
5 [报告]
发表于 2008-01-30 12:08 |只看该作者
可能我没说清楚跳转的意思.再详细一点.

楼主目前的验证流程是,在用户看来是在app1上验证,而服务器实际是从sso上获得的信息.不管这个过程是每次都相同,还是只在首次登录时使用,其根本的验证还是在sso上.遇到的问题是,如果用户直接去访问sso,那么sso无法从cookie中得到任何信息.

这样的话,可以在sso的文件中包含自己的验证脚本,如果发现没有任何cookie,那么就直接跳转到 app1/jump.php. jump.php 负责接收app1上的cookie信息,并组织好数据结构,通过get或者post方式传给sso上的验证文件.或者直接返回到上一个referer,这样sso就可以得到相关信息以便输出相应的内容.

既然是在sso上修改密码,在修改之间肯定要再次验证客户端信息,如果验证通不过,就直接报错.sso信任的app1数据,仅仅是作为显示来使,库的更新还是自己来验证.

论坛徽章:
0
6 [报告]
发表于 2008-01-30 13:14 |只看该作者
恩,这样也是一种方法。
但是有没有办法既能从sso上取得数据,又能让sso本身能设置cookie呢?
或者不用file_get_contents,而是用别的方法,有没有可行的方法呢?

感谢super_fire兄弟

论坛徽章:
0
7 [报告]
发表于 2008-01-30 15:21 |只看该作者
ajax跨域太不安全,跨域可以考虑用web service

论坛徽章:
0
8 [报告]
发表于 2008-01-30 16:53 |只看该作者
应该算是多系统跨域统一验证的问题.
可以用header跳转, url跟上参数, 处理好后再返回来.
phpwind的论坛博客就通过这种方法来实现的. 希望对楼主有用.

论坛徽章:
0
9 [报告]
发表于 2008-01-30 17:07 |只看该作者
用了AJAX就没办法用header跳转
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP