免费注册,打造高效身份管理
博客/开发者/什么是单点登录?有哪些实现方式?
什么是单点登录?有哪些实现方式?
Authing 官方2022.07.22阅读 847

近些年,越来越多的企业正在迁移到云端,很多客户希望从任何地方、任何地点、任何计算机上无缝访问多个应用程序。在另一方面,由于公司在不同标签下都有数百个接触点,因此尝试处理所有这些接触点将使他们的 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 有四种授权模式:

  1. 授权码(Authorization-code):指的是第三方应用先申请一个授权码,然后再用该码获取令牌。该方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。
  2. 隐藏式(Implicit):该模式面向纯前端应用,App 认证服务器只返还一次授权码。
  3. 密码式(Password):允许客户端或者第三方应用,直接使用用户的账号密码进行令牌的获取。该方式在用户端应用广泛。
  4. 凭证式(Client credentials):适用于没有前端的命令行应用,即在命令行下请求令牌。该方式操作简单,只需要发送客户请求,即可获得访问令牌(Access Token),但这种方式非常不安全,需要对客户端完全信任,且客户端本身需要具备安全性。

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

  1. 在你的应用中,让用户访问登录链接,浏览器跳转到 Authing,用户在 Authing 完成认证
  2. 浏览器接收到一个从 Authing 服务器发来的授权码
  3. 浏览器通过重定向将授权码附带在重定向地址后面
  4. 你的应用服务将授权码发送到 Authing 获取 AccessToken,如果需要,还会返回 refresh token。
  5. 你的应用后端现在知道了用户的身份,后续就可以保存用户信息,重定向到前端其他页面,使用 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 作为客户端与服务器之间随机的票据,授权流程如下:

  1. 访问服务:客户端发送请求访问应用系统提供的服务资源。
  2. 定向认证:客户端会重定向用户请求到服务器。
  3. 用户认证:定向到服务器后,用户进行身份认证。
  4. 发放票据:服务器会产生一个随机的 Service Ticket 。
  5. 验证票据:服务器会验证票据 Service Ticket 的合法性。
  6. 传输用户信息:服务器验证票据通过后,传输用户认证结果信息给客户端。

 

 

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

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

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

主要有两个主体:

  • 服务提供方(Service Provider)
  • 身份提供方(Identity Provider)

 

授权流程如下:

  1. 服务提供方(Service Provider)向 身份提供方(Identity Provider) 发出 SAML 身份认证请求消息,请求其鉴别用户身份;
  2. 身份提供方(Identity Provider)向用户索要用户名和口令,并验证其是否正确。
  3. 如果验证无误,身份提供方(Identity Provider)向服务提供方(Service Provider)返还 SAML 身份认证的应答,表示该用户已经成功登录,该应答中还包括了一些额外信息,以确保应答没有被篡改和伪造。

 

 

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

文章作者

avatar

Authing 官方

0

文章总数

authing blog rqcode
关注 Authing 公众号
随时随地发现更多内容
authing blog rqcode
添加 Authing 小助手
加入 Authing 开发者大家庭
身份顾问在线解答
当前在线
如何打造完整的身份体系?
立即沟通
authing
添加企业微信,领取行业资料
authing
authing
下载 Authing 令牌,体验快速登录认证!
免费使用
在线咨询
电话咨询