1. 说明

单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼;本文主要介绍跨域间的 前后端分离 项目怎样实现单点登录,并且与 非前后端分离 的差异在那里?需要解决什么问题?

本平台主要是说明如何把第三方的应用集成至平台的统一登录平台中来。

2. 单点登录原理

  1. 访问系统判断未登录,则跳转到UAA系统请求授权,并将当前的URL作为跳转地址传递到UAA.

  2. 如果UAA 发现已经登录,则跳转回 之前的URL。

  3. 如果UAA没有登录则进行登录,登录后获取token ,并将token 传递到之前的URL,之前的URL可以根据这个token 获取登录的用户数据。

3. 实现架构

下面是前后端分离项目的三个角色(前端WEB工程、单点登录应用,授权中心UAA)间进行登录/单点登录时的交互逻辑架构图

4. 平台整合实现

4.1 单点服务应用

这个应用的作用是

  1. 当App没有登录时,跳转到这个单点登录应用,并将当前的URL作为返回URL传递到这个应用。
  2. 当单点应用已经有token,那么直接跳转回之前的应用。
  3. 当单点登录没有token ,那么使用登录界面进行登录,登录成功后,带上token返回之前的URL.
    4.获取返回后的token:Vue.ls.get(“Access-Token”)

客户端在检测本地没有登录后,将当前的URL 附加到 单点页面,访问方式如下:

http://主机/sso/login?redirect=需要跳转回的地址

当登录成功后,系统会附加 token到返回的地址,用户自己在根据token获取当前登录人的信息,标记登录成功。

4.2 获取登录用户对象

登录后,用户可以通过 token 获取当前登录用户对象。

平台提供了一个接口

http://主机/api/api-uaa/oauth/user/current

使用post方法

参数为 token

返回数据如下:

文档更新时间: 2021-08-28 12:43   作者:csx