多系统,如何打通用户,实现统一的身份认证?

 

我们之前写过如何通过Drupal构建站群系统,如果需要请点击查阅:《站群系统介绍》。

站群系统就面临一个问题,就是打通用户,所有的网站的用户都用同一身份认证。此外,在高校、企事业单位经常会有众多系统,那么如何同一管理这些用户和用户认证呢? 本文就如何通过Drupal实现统一的SSO认证作为重点,来讲解如何通过开源方案,实现统一身份认证。

统一的身份认证,一般我们都会通过标准的协议来实现,比如常用的有一下几种:

       (1)CAS认证系统。

       (2)SSO认证。

       (3)OAuth 2.0认证。

三种方案对比,我们采用OAuth认证,因为CAS和SSO都有局限性,OAuth是无状态,并且支持手机、WEB、第三方应用都可以,开放程度相当高。

 

OAuth 2.0 认证

Open auth,本质上是把用户登录,输入用户名和密码,放到一个中心网站,当用户登录成功,就直接跳到目标网站,那么用户的密码只需要保存一份即可,比较方便。

Open Auth的认证模式是多种的,因此可以兼容WEB、手机APP、应用程序等,因此第三方所有的应用都可以通过Oauth接入统一登录系统,因此Oauth也提供多种授权方式,每一种授权方式,可以兼容不同的场景,如下所示: 

   (1)授权码(authorization-code)

   (2)隐藏式(implicit)

   (3)密码式(password)

   (4)客户端凭证(client credentials)

 

 

如何架设Oauth服务

 

Oauth本质上,就做用户管理、用户修改密码、用户登录这三件事情,此外通过额外的配置,可以管理用户在不同站点的role,也就是说可以在不同的站点,用户拥有不同的角色和权限。

Oauth服务,我们可以通过Drupal来架设,Drupal本身自带用户系统,那么加上Oauth模块即可,Simple OAuth模块可以迅速实现一个OAuth Server,生成客户端的APPID 和KEY,就可以办法给客户端使用,比较方便。

 

 

站群系统的架设

通过Oauth我们就实现了统一的身份认证,这样就不需要多次登录以及管理用户,多个站点就可以共享用户信息,达到了单点登录的目标。

比如,在图书馆内部,我们就可以通过如下的方式实现单点登录:

统一的用户管理和认证中心

 

统一的用户管理和认证后台

 

所以,综上所述,当我们有多个站点,比如信息站,财务管理,图书馆等系统,需要我们通过Oauth打通集成在一起的时候,那我们可以采用如下的架构方案: 

 

 

与现有的用户审批系统对接

 

很多单位,已经有了用户管理系统,并且包括权限审批,那么我们可以通过Drupal,只做一个统一的身份认证即可,用户的系统跟现有的系统集成即可。

比如跟图书馆用户系统集成,用户的CMP审批系统等,整体的架构就是上面的图,旧图新用 :)

 

 

更多的站群和SAAS介绍,请参考我们之前的文章:

Headless CMS:以API为输出的内容系统的构建

高校信息化之统一SAAS管理的解决方案

Drupal Headless CMS 之 GraphQL API