盘点单点登录问题的那些解决方案

为什么需要单点登录?

随着公司的业务增长,公司内会出现各种各样的办公系统,财务有财务系统,人力有人力系统,行政也有自己的系统。由于之前没有统一的规划和设计,各个系统都有自己的账号体系。庞大和复杂的账号体系,会给管理上带来严峻的挑战,同时也面临着安全风险。针对这些问题引入单点登录机制,解决多系统账号体系的管理问题。

什么是单点登录?

单点登录(Single Sign On)就是用户只需要登录一次就可以访问所有的系统,不需要每次登录新系统的时候还需要额外输入对应的账号密码。这样简化了登录流程,提升了效率,也增加了安全性。

单点登录的解决方案有哪些,有什么优缺点?

单点登录典型的方案有:CAS流程、JWT、OAuth、OpenID四种。

CAS流程(Central Authentication Service,集中式认证服务)是一种开源的单点登录框架,通过使用该框架可以将单点登录机制完整落地,是实战性比较强的方案。该方案的业务流程图如下所示:

 通过引入认证中心,实现所有相关应用认证的几种管理,避免了账号体系的冗余。

JWT(Json Web Token)是一种非常轻量级的单点登录流程。此方案会在本地生成一个凭证信息,用户每个登录的请求中都会带上这个凭证信息,将其作为登录凭证。此方案的优点是凭证在客户端保存,不需要服务端的参与和维护。但是这也是此方案的缺点,由于服务端无法管理本地的凭证,使其失效,如果认证凭证泄漏或者被盗用将引起很严重的问题。

OAuth(Open Authorization)主要是实现授权认证,我们通过QQ或者微信登录第三方应用的时候,所采用的的协议就是OAuth。通过OAuth,用户在认证中心完成登录之后,应用根据用户的QQ/微信账号信息,绑定手机号,创建自己的账号信息完成授权认证。

OpenlD(Open ldentity Document)和OAuth的功能一致。但是,OpenlD不提供授权的功能。最常见的,当我们需要在应用中使用微信支付的时候,应用只需要收集支付相关的信息即可,并不需要获取用户的微信头像。

在实际的业务中,很多公司基于实际业务考量,都会生成一套自己的单点登录框架,一般业务流程如下所示:

在这个过程中认证信息通过应用服务器转发给认证中心,应用直接得到了认证信息的凭证,存在一定的安全风险。

最佳实践是什么?

CAS提供了一整套的开源登录框架,实战性强,比较好操作。

在适用范围上,JWT适用范围广,在单点登录的选取上面,如果想要将用户信息做统一管理,选择它最为简单。

如果认证中心只是被用来维护账号密码,由业务去维护用户所绑定的其他手机等信息,那么采用OAuth更合适。

由于不同公司面临的业务场景不同,所以应该根据自己的需求引入对应的单点登录框架。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值