Authing | 为什么所有软件都应该使用单点登录来管理用户?

![](upload://pK6rTkzmByzxNTuk2weQkPqYiNM.png)
## 一、什么是单点登录?
![](upload://6dH6x76OYC0PeAFXqR0MHvWlqZ4.png)
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

二、使用 SSO 带来的「业务优势」

1)提高用户的效率

用户不再被多次登录困扰,也不需要记住多个 ID 和密码。另外,用户忘记密码并求助于支持人员的情况也会减少。

2)提高开发人员的效率

SSO 为开发人员提供了一个通用的身份验证框架。实际上,如果 SSO 机制是独立的,那么开发人员就完全不需要为身份验证操心。他们可以假设,只要对应用程序的请求附带一个用户名,身份验证就已经完成了。

3)简化管理

如果应用程序加入了单点登录协议,管理用户帐号的负担就会减轻。简化的程度取决于应用程序,因为 SSO 只处理身份验证。所以,应用程序可能仍然需要设置用户的属性(比如访问特权)。

这些都属于业务上的优势,除了业务上的优势外,还有软件架构层面的优势。

三、使用 SSO 带来的「软件架构层面的优势」

1)向下兼容

单点登录是一种比普通的账号密码登录更加规范化的解决方案,如果有一天你的业务扩大,想要聚合所有平台的用户,那么提前用上了单点登录的你会使整个过程变得非常容易。有太多前期的用户系统做的很不规范,系统壮大后需要投入大量人力物力来进行迁移的案例出现。造成软件前期不使用单点登录的主要原因是单点登录的复杂性,如果单点登录的复杂性和实施成本能被降低,那么我相信很多人都愿意直接使用

再类比一下,使用单点登录对你的系统向下兼容就好像 C++ 可以兼容 C 语言一样,你在用 C++ 时,使用面向对象编程的同时,不会耽误你面向过程编程。相反,如果你使用了 C 语言,在理论上你当然也可以面向对象编程,只不过过程过于复杂,异常痛苦,甚至不符合 C 语言的设计思想。为什么要将不合适的东西强行扭成合适的呢?这就是单点登录相较于普通登录方式最本质的区别。

教科书为了让你快速上手,所以选择 C 语言开始;PHP 为了让你快速上手,选择让你学习最简单的单向「用户名 - 密码」登录开始。但是我们都知道,软件最好从一开始就使用面向对象编程,那么任何的互联网应用,从一开始就使用「单点登录」也是同样的道理。

![](upload://jGcrIjqAF8f9aZAvXUkTTQRFSJS.png)
### 2)简化迁移迁出流程

假设你的软件从一开始就没有考虑过使用单点登录,那么当你的业务拓展成功并且有多个平台后,多平台用户的 Merge 就会变成很大的一个难点,比如如何确定注册到 A 平台的邮箱和 B 平台的邮箱是同一个、用户的密码如何重置、如何确定 Merge 完成后的用户信息没有任何损失等等。

如果你从一开始就使用了单点登录,那么这些问题都将不复存在。将用户从平台中迁移出来将像导出 Excel 到 CSV 一样简单。

![](upload://e0bUTCjDndxrckEJRvYWP3xCAJu.png)
### 3)强化管理和安全流程

进行身份认证的目的是为了授权用户可访问哪些资源,单点登录都有十分规范化的权限授权系统,RBAC 是业内比较认可的授权管理方案。单点登录系统一般都自带开发者友好和组织友好的 RBAC 方案,可以让开发者快速实现中心化授权体系。

除此之外,用户的历史活动为判定可信度提供了丰富的分析素材。系统可以通过挖掘用户的历史操作构建其行为基线,然后通过比较当前操作和其行为基线来计算用户的信任评分。

通过比较当前用户的地理位置坐标可以发现是否有异常,比如一个用户的设备在一个较小的时间窗口内突然出现在某个用户不可能达到的坐标;再比如用户有多个设备,但其报告了不一样的地理位置。但是必须注意,地理位置是存在偏差的,所以地理位置的权重不应该过高,而是作为一种参考。

成熟的单点登录系统都会提供这些功能,除此之外还有可定制的加密算法、用户密码泄漏检测等多维化功能,保障整个系统的管理安全和流程安全。

![](upload://buDWwSlKeEFm2WKgLrQPeb3D3EG.png)
## 四、如何低成本的实现单点登录 ?

前面我们讲了为什么所有软件都应该使用单点登录来管理用户,**那么如何最低成本的实现单点登录呢?**这里就要介绍下 Authing 了。

Authing 是一款身份认证云,提供了开发者优先和极易拓展的开发平台,简化了身份管理的流程,使用 Authing 可以用极短的时间和极低的成本实现单点登录**(用户量数十万的应用从迁移进 Authing 到上线到生产环境只需要两天)**,如果你对此感兴趣,可以查看这篇文章:用 Authing 10 分钟实现单点登录

最后,希望这篇文章能对你的下一次软件开发有帮助~

相关阅读

欢迎关注 Authing 技术专栏

Authing 社区

什么是 Authing?

Authing 提供专业的身份认证和授权服务。
我们为开发者和企业提供用以保证应用程序安全所需的认证模块,这让开发人员无需成为安全专家。
你可以将任意平台的应用接入到 Authing(无论是新开发的应用还是老应用都可以),同时你还可以自定义应用程序的登录方式(如:邮箱/密码、短信/验证码、扫码登录等)。
你可以根据你使用的技术,来选择我们的 SDK 或调用相关 API 来接入你的应用。当用户发起授权请求时,Authing 会帮助你认证他们的身份和返回必要的用户信息到你的应用中。

Authing 在应用交互中的位置
* 官网:http://authing.cn * 小登录:https://wxapp.authing.cn/#/ * 仓库:** 欢迎 Star,欢迎 PR ** * https://gitee.com/Authi_ng * https://github.com/authing * Demo: * https://sample.authing.cn * https://github.com/Authing/qrcode-sample * 文档:https://docs.authing.cn/authing/

欢迎关注 Authing 技术专栏

Authing 社区