网上对SSO的技术文章已经有不少了,这里我们想聊一聊应当如何设计单点登录才更加合理,更加完善,使大家不走弯路。
启动SSO项目时一般都会面临以下几个问题:
- 帐户信息不一致。
- 1) 不同系统,用户名不统一。
- 2) 有些系统即使用户名一致,密码不一致。
- 3) 多个用户同时使用一个帐户的情况。(这种在非软件性企业相对多些)
- 没有统一用户信息源头。
- 所有的用户信息分散在各个子系统中,没有统一,集中管理。
- 帐户管理成本高,帐号开通,员工离职帐户不能及时停用或删除,给管理带来风险。
- 帐号安全策略不一致。
以上情况存在各种系统之中,有BS,CS两种,大都BS系统,如果有源码,这些相对容易,可以修改源代码的方式做集成。有些BS系统没有源代码,则可能需要通过POST参数方式来实现登录。
基于以上的问题形成我们的项目需求,在系统设计时大概有以下功能点。
- 人员身份管理与验证
- 1) 建议统一用户身份库(可以理解成所有用户身份信息统一管理,所有员工的工号都在这里)
- 2) 用户帐户统一管理,包括帐户统一开通,离职关闭。
- 3) 如果公司有域,建议用域来验证帐户,密码信息。
- 4) 工号与其他非工号登录的子系统的对应关系。(无源码且非域帐户登录的系统需要保存各子系统的帐户和密码,需要通过POST FORM的方式来实现登录)
- 5) 密码安全策略
- 6) 有条件可以把新员工入职及审批做进来。
- SSO门户需求
- 各子系统集成
- 1)有源码的系统需要修改用户名,密码校验部分及如果登录失败后的消息返回;提供开通帐户,停用等接口服务供SSO平台统一调用。
- 2)无源码的需要研究子系统如何POST FORM表单验证。
- 报表及日志
- 睡眠帐户的统计;异常登录监控(连续多次输入错误密码);正常登录数据的统计分析
- 在线用户及并发量的监控
- 应急方案。
- SSO一旦实施,如果出现问题的话可能会导致所有用户无法使用任何系统,所以需要做好应急方案。
以上是一些关于SSO的一些思考,欢迎大家关注我,如果大家对SSO有兴趣可以持续发布一些实战案例及详细集成给大家分享。