上一篇本人根据园友的文章:[原创]单点登陆(SSO)组件的设计与实现,根据自己的理解进行一次总结性的分析:分析单点登录(流程图与数据安全).
当时根据SSO的流程做下了个人分析,也得到不少园友的评论及帮助,可是觉的可惜的是,没有一位园友提出我画的流程图中存在的问题.这也可能是大家没有看明白我的图(本人不才).
当时自认为在流程上以及业务逻辑上都没有太大的问题,至到有次和朋友谈到了SSO,当时我非常自豪的说出了SSO的流程及思路,他也非常认可,可是他的一个问题把我难倒了.
他的问题是这样的:
如果用户A在联盟站点SiteA中通过了认证中心的认可.这样用户A的用户uid就会出现在认证中心中的线列表中.此时如果用户A重新打开一个联盟子站点SiteB,此时在联盟站点SiteB中如何确认这个用户的身份呢?按
理说这个用户A在联盟点SiteB中应该是登录状态.
为此再次贴出自己理解的SSO流程图,并在图上附上了困扰我的三个问题.
按照SSO登录流程来看(个人理解):
首先:
判断本站点的Session["uid"]是否存在,如果本站点的会话状态存在则说明是登录状态.
问题:用session来管理子站点的会话状态,可以有效的减少子站与联盟站点的关联.但是当子站点的session过期后,此时的情况有可能是这样的,在子站点A中存在的Session没有过期,但子站点B中的Sesion 正好过期,而用户又没有通过正常的退出操作,此时如何控制认证中心的在线列表呢?是存在还是不存在呢?
时间: 2024-09-01 12:07:51