首页 新闻 搜索 专区 学院

关于单点登录的问题

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

公司有多个系统, 现在想实现统一的登录。

a.xxx.com   b.xxx.com 等等。

目前的做法是, login.xxx.com 专门做一个登录验证。 然后把用户信息加密存储在 cookice里。 那么 a.xxx.com 和 b.xxx.com 就可以共享cookice了。

现在我有几个疑问,希望大家能帮我解答一下。

第一个问题: 这样做行不行?

第二个问题:假设我这个cookice时效为一天。 那么如果在一天内, 要是管理员把某个员工禁用了, 但是这个时候客户端有了这个cookice 那么还是可以继续操作的,怎么办?

第三个问题:现在大多数站点,比如京东,博客园,等 是怎么做的?

dongjun519的主页 dongjun519 | 初学一级 | 园豆:122
提问于:2016-05-12 23:41
< >
分享
所有回答(9)
0

这样也可以,不过不安全。

建议使用session,比cookie更安全,然后再加上身份验证,这样就更强壮了。

seayxu | 园豆:5468 (大侠五级) | 2016-05-13 00:09

用session,他的需求满足不了,多台服务器如何共享session,难道还要单独建立一个Session服务器,一挂全部挂。

支持(0) 反对(0) Supper_litt | 园豆:783 (小虾三级) | 2016-05-13 10:57

@Supper_litt: Session多服务器共享是可以的,这个你可以搜索的到的

支持(0) 反对(0) seayxu | 园豆:5468 (大侠五级) | 2016-05-13 11:02

@XY.Seay: 代价太高,稳定性不高,依赖性太大。

支持(0) 反对(0) Supper_litt | 园豆:783 (小虾三级) | 2016-05-13 14:23
0

修改cookie中sessionid的域为xxx.com, 会话就会在所有二级域名下共享.如果你们的服务器不在一起就用独立的session服务器.

这是达到你目的最简单的办法.

吴瑞祥 | 园豆:28820 (高人七级) | 2016-05-13 09:10
0

我针对你的第二个问题,回答一下,你cookie里面肯定只有员工的唯一定位信息噻,你真正操作使用的时候,可能要从cache里面拿到员工的完整信息,那个里面判断员工状态就可用了,或者再cache里面直接就拿不到员工,return null

Supper_litt | 园豆:783 (小虾三级) | 2016-05-13 10:56
0

创建一个 用户登录的表 存session 每天晚上定时清理,如果禁用的话 从表里面 删除。各个站点 登录的时候 统一验证

DNLi | 园豆:306 (菜鸟二级) | 2016-05-13 17:29
0

token认证,在各自保留跨站点的登陆信息,区分本站登陆和单点登陆。

不会Redis | 园豆:670 (小虾三级) | 2016-05-14 15:37
0

如果是asp.net程序,可以直接采用微软的Form登录机制,authentication 里设置domain=".xxx.com",就可以实现登录共享了

yinhy2018 | 园豆:148 (初学一级) | 2016-05-16 13:23
0

单点分为几个步骤:

1.系统没有登录 跳转到登录站点

2.登录后跳转回 系统 同时带回身份识别的键(这个键应该带有时效性)

3.通过这个键 获取用户信息

4.在cookie中共享这个键 

 

这里你的误区是 cookie里面共享的东西 cookie里面共享的不是用户信息 而是键值 那么就没有安全问题(如果跨域是没法共享cookie的),这里的关键在于共享键值 至于是用什么手段 都无所谓

 

其二 有关时效性的问题 能够设置失效的 不见得非要是cookie 也可以是键值在返回的时候就自带 有效时间

小眼睛老鼠 | 园豆:2774 (老鸟四级) | 2016-05-16 14:21
0

oauth 2.0

宁涛 | 园豆:348 (菜鸟二级) | 2016-05-17 15:03
0

放在session中,禁用以后修改session就行

小光 | 园豆:1830 (小虾三级) | 2016-05-20 18:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册