浅谈单点登录系统的实现

       最近经常在听用户说,以前都谈组网,现在都谈数据整合、谈应用。谈到这里,要把多个沉淀下来的数据孤岛打通,实现数据整合很难,但可以分步走。第一步,一般是实现多个业务系统的单点登录。以前领导登每个业务系统都需要输入帐号密码,很烦人,有了单点登录系统,一次登录验证,在一段时间内不再登录其他的业务系统。

        一、如果客户问到我们,问题1 单点登陆系统需要其它业务系统的配合开发吗?单题2 单点登陆系统能够实现对其它业务系统的子模块功能权限统一管理吗?我们该如何回复? 因此,了解目前单点登陆系统(Single Sign On)SSO的原理很重要。

        二、目前业务主流的SSO系统的实现原理,其实像欢乐谷游乐场的套票。当我们进入游乐场时需要买一张套票,套票种类有豪华版、标准版,决定了你能玩哪些游乐设施。当你拿着套票去每个游乐点时,服务人员会验证你的套票是否有玩该游乐点设施的权限。带着这个比喻我们来看一下真实的原理。

        三、当用户任意登陆一个业务系统服务器A时,业务A发现用户并没有登陆令牌,因此要求用户跳转至认证服务器进行单点统一认证(步骤1)。用户认证通过后(步骤2),拿到成功登陆令牌。这里,用户可以访问业务服务器A、B(步骤3、5),业务服务器拿到用户的登陆成功令牌后向认证服务器校验该令牌的有效性及登陆是否在有效时间内(步骤4、6),如果业务服务器代认证通过,则用户可以真实访问服务器A、B的业务资源。

        四、我们来简单看一下用代码如何实现。

        1、首先、认证服务器必须具有创建令牌的功能。令牌的组成部分包括登陆时间、登陆有效时间、用户名、校验码等。同时为避免该信息被窃取,一般会将令牌进行AES的对称加密。

        2、其次,认证服务器还必须通过微服务的方式放出验证令牌的功能,一般用webservice提供接口。

        3、对于业务服务器,必须关闭原来的自有认证界面,并开发令牌认证的子模块。因此,对用户的问题1,子业务系统必须进行开发。

        针对问题2,SSO系统一般不具备对子业务系统的功能模块的统一管理功能,如果进行对接开发也可以,但难度较大且因子业务系统功能变更较快,一般不建议SSO开发子业务系统的功能模块统一管理功能。

扫描二维码关注公众号,回复: 5144193 查看本文章

更多内容实时更新,请访问公众号。

    

点击这里,获取最高¥1888阿里云产品通用代金券

猜你喜欢

转载自blog.csdn.net/qq_29718979/article/details/86652738