首页 新闻 会员 周边

如何使用Cookie实现跨域的单点登录?

0
悬赏园豆:100 [待解决问题]


例如:程序A部署在http://spjg.sipac.gov.cn上,地址为http://spjg.sipac.gov.cn/程序A
      程序B部署在http://jsms.sipac.gov.cn上,地址为http://jsms.sipac.gov.cn
现在又需要实现一个程序登陆有保存用户信息到客户端,并在其他程序中使用,访问其他程序的登陆页面时如果信息正确就自动登陆,这其中域名端口不一样

现在的问题就是如何:
能够在程序A中访问程序B的Cookie,或者在B中访问A的Cookie???

cookie的Domain都设置成了统一的还是不成功,端口不同会有影响吗?

Cookie cook = new Cookie
{
Name = keyValuePair[0].Trim(),
Value = keyValuePair[1].Trim(),
Domain = "cdhrss.gov.cn" //设置cookie域
};

求大神告知,多谢!!!

 

营养快线123的主页 营养快线123 | 初学一级 | 园豆:54
提问于:2017-05-31 15:35
< >
分享
所有回答(10)
0

为什么一定要放在cookie里?安全应该会有隐患吧,单点登录session放在服务端统一管理比较好,参照spring session redis,如果你们需求一定要存放在浏览器,当我没说

[3] | 园豆:1174 (小虾三级) | 2017-05-31 15:41

那如果是模拟登陆呢,跨域访问单点登录

支持(0) 反对(0) 营养快线123 | 园豆:54 (初学一级) | 2017-05-31 15:49

@营养快线123: 额,刚才没看明白你的问题,以为你是负载准衡,如果是不同web单点登录,我一般是用cas做的,类似百度旗下所有产品,公用一个百度账号....反正正常情况应该很少有把session放在浏览器实现的

支持(0) 反对(0) [3] | 园豆:1174 (小虾三级) | 2017-05-31 15:57

@南方酱米饭: 我知道 我试试

支持(0) 反对(0) 营养快线123 | 园豆:54 (初学一级) | 2017-05-31 16:17
1

搭建一个单独的sso站点,来进行授权。

幻天芒 | 园豆:37175 (高人七级) | 2017-05-31 16:16

我知道 我试试

支持(0) 反对(0) 营养快线123 | 园豆:54 (初学一级) | 2017-05-31 16:23

多谢

支持(0) 反对(0) 营养快线123 | 园豆:54 (初学一级) | 2017-05-31 16:23

模拟单点登录  也是这样做吗

支持(0) 反对(0) 营养快线123 | 园豆:54 (初学一级) | 2017-06-01 11:46

@营养快线123: 什么叫模拟?

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2017-06-01 14:16

@幻天芒:抓虫

支持(0) 反对(0) 营养快线123 | 园豆:54 (初学一级) | 2017-06-05 09:35
0

http://blog.csdn.net/daybreak1209/article/details/51179629

这里有详细解释

skateweb | 园豆:170 (初学一级) | 2017-05-31 17:36
0

http://blog.csdn.net/daybreak1209/article/details/51179629

风行天下12 | 园豆:3867 (老鸟四级) | 2017-05-31 18:53
0

可以使用 url 跳转,统一跳转到:

http://www.sipac.gov.cn/sys_a,

http://www.sipac.gov.cn/sys_b,

我们的折桂单点登录系统就是如此。比较省事。http://zheguisoft.com

杰克伦敦尘 | 园豆:274 (菜鸟二级) | 2017-06-01 11:28

可能你没明白我的意思    是模拟单点登录

支持(0) 反对(0) 营养快线123 | 园豆:54 (初学一级) | 2017-06-01 11:31
1

Domain = ".sipac.gov.cn";

 

cdhrss.gov.cn是什么?你笔误写错了吧?

Timetombs | 园豆:3954 (老鸟四级) | 2017-06-01 11:47

对  是笔误 

支持(0) 反对(0) 营养快线123 | 园豆:54 (初学一级) | 2017-06-01 11:48

@营养快线123: Domain = ".sipac.gov.cn";这样不行?

支持(0) 反对(0) Timetombs | 园豆:3954 (老鸟四级) | 2017-06-01 11:52

@Blackheart: 不行  有好的办法吗

支持(0) 反对(0) 营养快线123 | 园豆:54 (初学一级) | 2017-06-01 16:01
0
Access-Control-Allow-Origin: http://server-a.domain.com
Access-Control-Allow-Credentials: true

 

以及

 

xhr.withCredentials = true
CaiYongji | 园豆:1267 (小虾三级) | 2017-06-01 17:59

不知道你说的什么意思

支持(0) 反对(0) 营养快线123 | 园豆:54 (初学一级) | 2017-06-03 18:24
0

ab系统认证是否同一数据,是否同一认证方式 ——

1.有现成的sso系统,即使不同认证数据,不同认证方式都支持,只需要配置(以及加脚本)验证参数即可。

2.自己写就现场分析了,比如系统都是自己的,可以不用单独写个sso也可以;不是自己的,先把请求拦截,把验证截获到自己的代码中,然后去注入系统的验证过程即可(请求直接直接抓出来,有很强的验证的方式话(比如阿里的滑块),可能得呵呵了,用模拟操作都不一定每次能通过)。

花飘水流兮 | 园豆:13560 (专家六级) | 2017-06-03 01:09
0

@营养快线123: domain为.一级域名的,在所有二级域名上都是可以共享的,你先确定你是否成功创建了cookie以及domain是否是.一级域名的形式(可以通过chrome开发者工具查看)。我简单测试了一下,确实是可以的。具体做法是在a.test.com下写两条cookie数据,分别是:aaa=111;domain=.a.test.com和bbb=222;domain=.test.com,具体Java代码如下:

// "aaa=111;domain=.a.test.com",在b.com.test域下无法访问
Cookie cookie1 = new Cookie("aaa", "111");
cookie1.setDomain("a.test.com"); // 对于tomcat(8),域名前面不能加"."号!!!
resp.addCookie(cookie1);
// "bbb=222;domain=.test.com",在b.com.test域下可以访问
Cookie cookie2 = new Cookie("bbb", "222");
cookie2.setDomain("test.com");
resp.addCookie(cookie2);

然后访问a.test.com和b.test.com,利用chrome开发者工具查看如下:

 

学数学的程序猿 | 园豆:252 (菜鸟二级) | 2017-06-03 15:54

还在不?  能私聊不?

支持(0) 反对(0) 营养快线123 | 园豆:54 (初学一级) | 2017-06-05 11:31

@营养快线123: 可以啊

支持(0) 反对(0) 学数学的程序猿 | 园豆:252 (菜鸟二级) | 2017-06-05 11:47

@学数学的程序   1725343703xmk 麻烦加下我

支持(0) 反对(0) 营养快线123 | 园豆:54 (初学一级) | 2017-06-05 15:40

@学数学的程序猿: 微信

支持(0) 反对(0) 营养快线123 | 园豆:54 (初学一级) | 2017-06-05 15:40
0

可以把登录信息加密放进去 ,后台服务器用相应的密钥解密即可,

不过要求保证密钥不被泄露

苍枫露雨 | 园豆:1027 (小虾三级) | 2017-07-10 16:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册