通用登陆(上)

简介: 登陆代理服务

概览

背景

随着业务复杂性的增加,一个应用会被划分为许多子模块,这时就需要考虑为这些子模块建立共同的基础,从而来保证子模块间的无缝对接,登陆模块便是各类服务和管理系统的必备基础之一。
面对多种生产场景对认证安全的管理方式和粒度的需求,应用需要对接各种登陆协议。相对于开发人员,熟悉协议和重复性编码就成了对接登陆模块的必要工作量。
通用登陆代理服务,实现应用服务网关层(Spring Cloud Gateway)统一认证,让开发人员专注于业务开发。通用登陆代理服务接入简单,配置习惯对开发者友好,并支持主流登陆协议。

术语

  • 应用:一般spring cloud gateway的一个部署对应一个通用登录服务的一个“应用”。一个应用是使用一个固定登录方式(例如cas)的系统。
  • appCode:代表一个应用的唯一标识。
  • sso-client:是一个spring starter,通常是网关应用依赖的二方库,通过一定的配置,用于拦截请求,验证token信息。
  • sso-manager:是一个spring boot应用,用于接收sso-client的登录请求,对接不同的登录服务。
  • 登录服务:指cas server,auth server,idaas等提供登录服务的应用。

逻辑架构

通用登陆.png
公共管理:实现应用管理和协议管理
适配机制:解决登陆代理对象调用多种协议不兼容问题
回调机制:代理服务处理数据后,通过认证服务协议回调用户
模板模式:解决多种协议下,相同流程不同实现,便于扩展
存储模块:解决数据持久化、非持久化存储
SDK: java SDK
OpenAPI: 暴露HTTP接口,方便多语言集成

主要功能

image.png
上面的过程演示一个接入通用登录服务的请求过程。

  1. 前端首次访问,不带token,请求被sso-client拦截。
  2. sso-client拦截后转发到sso-manager,根据网关配置的appCode,查询当前应用的登录方式,例如图中的cas。
  3. cas将用户重定向到登录页面,登录成功。
  4. cas回调sso-mananger,sso-manager生成token。
  5. sso-manager将token返回给sso-client。
  6. sso-client返回给前端redirect信息,包含token。
  7. 前端获取到token,并redirect到微服务。
  8. 前端至此带入token,通过网关访问微服务。

目前支持的登录服务有:

  • CAS: 支持CAS协议的接入
  • IDaaS: 支持IDaaS协议的接入
  • Oauth: 支持Oauth密码模式的接入

通用登录代理(IDaaS/CAS模式)时序图

通用登录代理(IDaaS_CAS模式)时序图.jpg

通用登录代理(OAuth密码模式)时序图

image.png

相关文章
|
存储 前端开发 PHP
构建一个简单的网站,包括用户注册、登录功能
构建一个简单的网站,包括用户注册、登录功能
390 1
|
移动开发 前端开发 JavaScript
一些框架获取当前登录用户以及用户信息整理
无论是哪一个框架,获取当前登录用户信息是必不可少的,做一些功能的时候我们肯定得用到当前登陆者信息,所以我就查找了一下几个框架是如何获取当前用户信息,例如在若依框架中,用 this.$store.state.user就可以获取到。当获得的信息是极少时,不足够我们做其他功能时,当然你也可以自己在这个获取的基础上面增加所需信息即可。
一些框架获取当前登录用户以及用户信息整理
|
8月前
|
SQL 关系型数据库 MySQL
MySQL数据库基础练习系列13、用户注册与登录系统
MySQL数据库基础练习系列13、用户注册与登录系统
62 1
|
存储 安全 关系型数据库
通用密钥,无需密码,在无密码元年实现Passkeys通用密钥登录(基于Django4.2/Python3.10)
毋庸讳言,密码是极其伟大的发明,但拜病毒和黑客所赐,一旦密码泄露,我们就得绞尽脑汁再想另外一个密码,但记忆力并不是一个靠谱的东西,一旦遗忘密码,也会造成严重的后果,2023年业界巨头Google已经率先支持了Passkeys登录方式,只须在设备上利用PIN码解锁、指纹或面部辨识等生物识别方式,即可验证身份,也就是说,可以和密码说拜拜了。
通用密钥,无需密码,在无密码元年实现Passkeys通用密钥登录(基于Django4.2/Python3.10)
|
存储 SQL JSON
用户登录设计及免密登录的通用思路
完整的用户登录设计及免密登录的通用思路。涉及到了SQL表单创建、Mapper接口、Service接口、Controller接口。其中还讲述了如何统一的响应体,保持前后端友好开发;以及持久化token。
793 0
|
PHP
laravel-admin 自定义登陆逻辑,补充原有账号密码登录
laravel-admin 自定义登陆逻辑,补充原有账号密码登录
382 0
|
小程序 JavaScript 计算机视觉
无需交 300 元认证费,快速创建已认证的小程序
快速创建小程序接口优化了小程序注册认证的流程,能帮助第三方平台迅速拓展线下商户,拓展商户的服务范围,占领小程序线下商业先机。采用法人人脸识别方式替代小额打款等认证流程,极大的减轻了小程序主体、类目资质信息收集的人力成本。通过该接口创建小程序默认为“已认证”。为降低接入小程序的成本门槛,通过该接口创建的小程序无需交 300 元认证费。
181 0
无需交 300 元认证费,快速创建已认证的小程序
|
JavaScript 前端开发 数据安全/隐私保护
前端案例:简易登录表单的制作,包括用户名、密码、随机验证码(代码完整,复制即用)
前端案例:简易登录表单的制作,包括用户名、密码、随机验证码(代码完整,复制即用)
575 0
|
Java 数据库 数据安全/隐私保护
用户模块之登录功能 | 学习笔记
快速学习用户模块之登录功能
241 0
|
存储 缓存 NoSQL
通用登陆(下)
登陆代理接入