作者MrMarcus (请勿忘记密码)
看板PHP
标题Re: [请益] 有人做过 Single Sign On (SSO) 吗??
时间Wed Dec 12 03:20:55 2007
※ 引述《hijackla (YJUS小吃执行长)》之铭言:
: SOO就是单一登入系统
: 我目前有2套系统 当然也是2套资料库
: 请问要如何做一个单一登入系统阿??我不知正确作法.....
: 我想法是
: 如A系统 跟 B系统还有一个新C系统都建一个相同帐号与密码资料表
: 然後登入C系统时 C系统会有一个超联结连到A系统
: 如 http://loginCtoA.php?id=a1&pass=a11
: 然後点下去时 就会传帐密变数到A系统资料库去对应
: 如果对应正确的话 就会存session 和登入A系统
: 登入B系统方法也一样
: http://loginCtoB.php?id=b1&pass=b11
: 问题1: 请问这是SOO的正确作法吗?? 还是另有方法
: 问题2: 这样会安全吗????
: 问题3: 帐号密码都要存在A和B和C资料库,这样修改应该很麻烦吧?
: 有办法解决吗??
: 想问看看有没有大大用过SSO的系统@@
我做过一个系统是让两个网站(不同网域名称)可以彼此互通购物车
与会员帐号。使用者在A网站登入後,连结到B网站时,在B网站也是
已登入的状态(反之亦然)。不论有无登入,在A网站将商品放入购物车,
连结到B网站时,之前在A网站放入的商品也会出现在B网站的购物车中,
并且可以在任一网站进行结帐(不论当时购物车中包含AB哪个网站的
的商品,或者两个都有)。
大致上的做法跟你所想的一样,在A网站连向B网站的连结上动手脚,
先经过一个程式将session资料序列化後,传送到B网站去。B这边要
有一个程式专门接收A网站传过来的资料。反过来也是一样的做法。
一个重要的地方在於传送的资料必须确保没有经过篡改,否则有心人
可以直接丢资料到接收程式去,进而取得任意会员身分。这部份要小心。
我的做法是增加一个检查栏位,用MD5去编码session资料以及一段
只有AB两端的程式彼此知道的key(key不会在网路上传送),如果
资料被篡改但是检查栏位没有做相应的修改,接收端就会知道资料
有异状而做相应的动作。
传送的资料本身也要小心,不要传送敏感资料,除非传送过程有SSL
保护。我这边是不传送帐号密码以及个人资料,只传送购物车以及
登入状态资料。
我这边的状况是AB两网站虽然是彼此独立,但是是共用资料库。
不过即使两边资料库分开,只要互相读取得到彼此的资料,还是可以
做得到你的需求。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.153.19