一文,教你实现单点登录

近些年,越来越多的企业正在迁移到云端,很多客户希望从任何地方、任何地点、任何计算机上无缝访问多个应用程序。在另一方面,由于公司在不同标签下都有数百个接触点,因此尝试处理所有这些接触点将使他们的 IT 部门倍感繁琐。

单点登录的出现是为了解决众多企业面临的痛点,即他们的用户及员工需要登录很多程序或系统,每个程序与系统都有不同的用户名和密码。在企业发展初期,可能仅仅有几个程序时,管理账户和密码不是一件难事。但是当企业有数十、数百、数千应用程序时,试图了解哪位客户、哪位员工在使用哪个应用程序或系统中的什么账户、拥有哪些权限变得异常困难。

能否合理分配员工访问哪些程序和系统,对于合规性和监管性要求高的公司至关重要。所以,企业迫切需要一个轮子——这个轮子可以让员工只输入一次账号和密码,成功登录后,就可以访问任何相互信任的系统。

01

什么是单点登录?

单点登录英文全称 Single Sign On,简称 SSO。它的定义是:在多个应用系统中,用户只需要登录一次,即可访问所有相互信任的应用系统。例如,常见的单点登录是通过一次登录访问各种应用程序。例如,登录您的员工账号就可以让您访问飞书、销售易、客户系统等应用程序,无需再次输入账号和密码。

02

常见的单点登录五种协议

常见的 OIDC、OAuth 2.0、SAML2、CAS 3.0、LDAP 为标准认证协议。标准协议会按照特定的方式传递用户信息,正规的业务系统产品都会支持标准协议,使用标准协议对接可以一劳永逸地完成对接。

标准协议的推荐度:OIDC > SAML2 > CAS 3.0 > LDAP > OAuth2.0。下面我们来一一介绍:

OAuth 是一种关于授权(Authorization)的开放网络标准,是目前最流行的授权机制,在客户与服务商之间,设置授权层。客户必须先登录授权层,此时服务商会向客户授权令牌的权限及使用期限,然后客户才能登录服务商,使用其服务。

目前最新的版本为 OAuth 2.0 版,主要有四个主体:

授权服务器,负责颁发访问令牌(Access Token),Authing 是授权服务器。

资源所有者,应用的用户是资源的所有者,授权其他人访问其资源。

调用方,调用方请求获取访问令牌(Access Token),经过用户授权后,Authing 为其颁发访问令牌(Access Token)。调用方可以携带访问令牌(Access Token)到资源服务器访问用户的资源。

资源服务器,接受访问令牌(Access Token),然后验证它的被赋予的权限项目,最后返回资源。

OAuth 2.0 有四种授权模式:

授权码(Authorization-code):指的是第三方应用先申请一个授权码,然后再用该码获取令牌。该方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。

隐藏式(Implicit):该模式面向纯前端应用,App 认证服务器只返还一次授权码。

密码式(Password):允许客户端或者第三方应用,直接使用用户的账号密码进行令牌的获取。该方式在用户端应用广泛。

凭证式(Client credentials):适用于没有前端的命令行应用,即在命令行下请求令牌。该方式操作简单,只需要发送客户请求,即可获得访问令牌(Access Token),但这种方式非常不安全,需要对客户端完全信任,且客户端本身需要具备安全性。

常见的 OAuth 2.0 授权流程如下:

在你的应用中,让用户访问登录链接,浏览器跳转到 Authing,用户在 Authing 完成认证。

浏览器接收到一个从 Authing 服务器发来的授权码。

浏览器通过重定向将授权码附带在重定向地址后面。

你的应用服务将授权码发送到 Authing 获取 AccessToken,如果需要,还会返回 refresh token。

你的应用后端现在知道了用户的身份,后续就可以保存用户信息,重定向到前端其他页面,使用 AccessToken 调用资源方的其他 API 等等。

二、OpenID Connect (OIDC) 是一个身份验证层,是基于 OAuth 2.0 的认证方式,可提供单点登录功能,授权流程同 OAuth 2.0,其对 OAuth 2.0 的扩充,主要体现在——认证与授权过程中会额外返还令牌(ID Token),授权模式与 OAuth 2.0 一致。

OIDC 这个新型单点登录协议在保障安全性的同时,与 OAuth2.0 相比增加了认证能力,与 CAS 相比增加了授权能力,同时使用上比 SAML 简单,保证了认证授权的便捷性、私密性、安全性,是企业管理的最佳选择。

三、统一认证服务(CAS)是一种开放、简单且完备的身份验证协议。该协议是客户端、服务器与浏览器的三方约定,是大家都必须遵守的规则。

在 CAS 协议中,定义了 Service Ticket 作为客户端与服务器之间随机的票据,授权流程如下:

访问服务:客户端发送请求访问应用系统提供的服务资源。

定向认证:客户端会重定向用户请求到服务器。

用户认证:定向到服务器后,用户进行身份认证。

发放票据:服务器会产生一个随机的 Service Ticket 。

验证票据:服务器会验证票据 Service Ticket 的合法性。

传输用户信息:服务器验证票据通过后,传输用户认证结果信息给客户端。

四、轻量级目录访问协议 (LDAP) 是一种行业标准,基于 X.500 标准的轻量级目录访问协议,用来进行统一账号管理、身份验证平台。

但是,LDAP 不会定义登录这些系统的方式,它通常作为身份验证过程和访问控制过程的一部分。例如,在用户可以访问特定资源之前,LDAP 可用于查询该用户及其所属的组织,以查看该用户是否有权访问该资源。

五、安全断言标记语言(SAML)是一个基于 XML 的开源标准数据格式,允许网络上的多台计算机共享安全凭据,SAML2.0 可以实现基于网络跨域的单点登录(SSO), 以便于减少向一个用户分发多个身份验证令牌的管理开销。

主要有两个主体:

服务提供方(Service Provider)

身份提供方(Identity Provider)

授权流程如下:

服务提供方(Service Provider)向 身份提供方(Identity Provider) 发出 SAML 身份认证请求消息,请求其鉴别用户身份;

身份提供方(Identity Provider)向用户索要用户名和口令,并验证其是否正确。

如果验证无误,身份提供方(Identity Provider)向服务提供方(Service Provider)返还 SAML 身份认证的应答,表示该用户已经成功登录,该应答中还包括了一些额外信息,以确保应答没有被篡改和伪造。

最后,我们给 OIDC、OAuth 2.0、SAML2、CAS 3.0 标准认证协议做一个具体对比:

03

Authing 单点登录优势

单点登录 SSO 已成为管理企业世界中用户对应用程序和数据的访问的日益流行的选项。Authing 凭借单点登录技术,实现成员、客户在一处访问任何软件服务,并统一管控身份权限。无论通过企业联合、 社会登录还是用户名和密码身份验证,用户只需登录一次,就可以使用他们被授予访问权限的所有应用。

提高员工生产力

在员工忘记密码时,无需谋求 IT 部门支持。单点登录只需一个密码,员工即可访问其所有应用系统,无需记住全部密码,也无需到处查找密码,极大地提高了工作效率。

此外,员工无需在多个登录 URL 之间跳转或重置密码,每次登录可节省 5 - 15 秒,改善了员工使用体验。

提高安全功能

对于企业来说,单点登录有助于规避密码被破解风险,提高系统安全性。单点登录可以帮助降低员工因需要输入多个账号和密码带来的沮丧情绪,而自适应多因素认证 MFA 允许他们在登录严格权限的程序或网络之前验证用户身份,二者结合使用,保证了企业和员工信息的安全性,提高了客户信任度,降低了运营成本。

简化管理难度

单点登录可以帮助企业提高管理效率。通过整合身份信息,企业可以轻松控制员工对应用程序和数据的访问权限,确保只有授权的员工才能访问相应信息,提高了系统与数据安全性。对于员工的路转调离,都可以一键授权与删除。

降低开发成本

通常来说,大部分 App 都需要登录和注册功能。如果企业自研,少则花费半个月到一个月,遇到不熟悉相关技术的情况下,可能需要数个月才能完成。以一个程序员 2 万工资来算,养着一个团队做登录系统,就需要花费十几万元。使用单点登录,直接调用 SDK 接口,几行代码就可以集成登录系统,支持用户统一登录,并且还可以安全管理所有的用户,节约了 50% 研发时间,节省了用户 90% 登录时间。

由此,研发可以将更多时间用在更有价值的地方,比如手机号码闪验功能,用户一键授权即可以用真实号码完成注册和登录,为开发者建立以手机号码为基础的账号体系,手机不插卡也可以轻松认证。

Authing 提供完善易用的文档,并且支持主流编程语言的 SDK 和更底层的开放 API 能力以实现更细节的自定义能力。在开发者论坛中,遇到问题还可以与 Authing 工程师在线交流,快速锁定并解决问题。

04

Authing 单点登录解决方案

身份自动化

用自动化的账号生命周期管理代替手动式账号管理,人员入职-创建账号-选择部门-授权应用-授权角色-停用-离职-归档-删除,实现自动化生命周期管理。

统一用户管理

统一建立单一身份源,将身份中的属性信息同步至统一目录,向外输出唯一标准数据,便于管理。同时,Authing 统一目录支持对统一人员账户信息进行集中安全的存储和管理。

统一认证管理

Authing 在一个门户里集成了内外部多套业务系统(例如 C/S 应用、SaaS 应用等), 通过单点登录 SSO,用户只需输入一套账号密码,即可登录所有业务系统,无需在多应用之间频繁切换。

统一权限管理

Authing 提供统一权限入口、统一权限模型、统一授权、权限生命周期自动化管理、权限合规分析、权限画像等服务,帮助解决银行业当前身份权限管理面临的开通难、统一难、授权难、溯源难、查询难、回收难、监管难的问题,打造科学的权限治理体系,整合银行资源,实现用户、应用、设备、服务器、操作系统、 API 权限可管、可控和可视。

统一安全治理

Authing 搭建了风控中台及自适应决策引擎,在人员角色、受保护资源、访问策略、风险控制策略等方面,进行全链路安全审计,提升企业或组织数字化转型过程中的风险控制能力,大规模降低身份相关业务的受损风险。

关于 Authing

Authing 身份云国内首款以开发者为中心的全场景身份云产品,集成了所有主流身份认证协议,为企业和开发者提供完善安全的用户认证和访问管理服务,已帮助 20,000+ 家企业和开发者构建标准化的用户身份体系。

Authing 既是客户的支持者,也是客户的产品专家和战略顾问,更是值得信赖的合作伙伴。我们提供全球化的身份专家支持团队,通过网络或电话,7*24 小时不间断支持。Authing 的帮助中心提供最新的技术知识库、商业案例以及与您的同行和 Authing 专家联系的机会。无论您何时需要我们,Authing 的支持团队总能最快响应。

2022 年,Authing 将秉承着致力于客户成功的初衷,帮助推动客户重要业务,为实现身份连通、打破数据孤岛而不懈努力。

福利时间

在 AuthTalk 第一期直播中,数据猿主编张艳飞与 Authing 产品负责人佟野就《为 SaaS 企业提供 SaaS 服务》话题进行了深入探讨,主要包括以下内容:

    为什么国内 SaaS 企业营收难、利润低? TO B 企业数字商业策略的拐点与变革 B 端产品 C 端化是产品设计的新风向吗? 为什么说 IDaaS 奠定 SaaS 企业服务基石? Authing 如何用 SaaS 产品赋能 SaaS 企业?
经验分享 程序员 微信小程序 职场和发展