登录业务介绍(单点登录) | 学习笔记

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 快速学习登录业务介绍(单点登录)

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot)登录业务介绍(单点登录)学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/667/detail/11440


登录业务介绍(单点登录)


单点登录三种常见方式

单点登录(Single Sign On),简称为 SSO。

1. session 广播机制实现

什么叫广播?

展开想象:

有一个广场,广场上站了很多人,在前面一个人拿着喇叭对着所有人喊,他一喊其他人都可以听到,这个过程就是广播。 

在我们程序中是如何实现这一过程的呢?

session 的广播机制通俗来讲就是 session 的复制。 

什么叫复制?

image.png还是这张图,在 service-edu 中登录之后把数据放到 session 这个对象中,里面存了用户信息。  

用session广播机制把session对象复制到service-oss这一模块中,复制完成后再复制到service-cms这一模块中。

把登陆的session对象复制到其他模块中去,在每个模块中都有登录之后的session对象。

复制之后,这种登录就可以做到当第一个登陆里边有数据,第二个第三个也始终有数据,这个过程叫 session 复制。

如果项目里只有几个模块,那么做 session 复制就没有什么问题。

但是如果项目中有几十个模块, session 就要复制几十次,这对资源是极大的消耗,所以 session 广播机制并不适合多模块。 

这是一种比较早期的方式,网络刚刚兴起的时候用户比较少,网络访问量不大,网速也比较慢,那个场景下使用session的复制机制完全可以做到。但是现在使用会造成数据重复,浪费空间的问题。

2. 使用 cookie+redis 实现

Cookie 是客户端技术,最终存到浏览器中。在浏览器中每次发送请求,会带着cookie 值进行发送,这是 cookie 的特点。

Redis是一个内存数据库 最大的优点是读取速度快,还有一个特点是基于 key value做存储:

[root@online bin]#/redis-cli

127.0.0.1:6379> keys *

1)"test4"

2)"test"

127.0.0.1:6379> get test

"[\"java.util.ArrayList\",[\"user.list\",\"user.add\","\"user,update\",\\"user.renove\",\"user assgin\"]]"

127.0.0.1:6379>

(1)项目中任何一个模块进行登录,登录之后,把数据放到两个地方:

l redis :在key中生成唯一或随机的值,在 value 中放用户数据

唯一值生成的的规则不确定,一般来讲根据 ip 地址,或者用户 id 等等

l cookie:把 redis 生成的 key 的值放到 cookie 里

 (2) 访问项目中其他模块,发送请求带着 cookie 进行发送,获取 cookie 值,

拿着 cookie 做事情:

把 cookie 获取的值到 redis 根据 key 进行查询,如果能查出数据,表示已登录

3. 使用 token 实现

token 是什么?

*按照一定规则生成字符串,字符串可以包含用户信息

token 也叫令牌

例如:字符串:192.1.1.1#lucy#2#   做个编码再做个加密 

(1)在项目某个模块进行登录,登录之后,按照规则生成字符串,把登录之后

用户信息包含到生成的字符串中,把字符串返回 

l 可以把字符串通过 cookie 返回

l 把字符串通过地址栏返回

(2)再去访问项目中其他模块,每次访问在地址栏都带着生成的字符串,在访

问模块里获取地址栏字符串,根据字符串获取用户信息,如果可以获取,就是登

Session 默认的过期时间是30分钟。第二步第三步中没有 session,但是可以做到,要如何做呢?

Redis 是有过期时间的,可以通过设置redis过期时间做到和 session 一样的效果。Token 也可以设置。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
5月前
|
XML 安全 API
理解并实现单点登录(SSO)的技术解析
【5月更文挑战第21天】本文解析了单点登录(SSO)技术,旨在解决多系统登录的效率和安全问题。SSO允许用户在集中认证系统登录后,无须反复输入凭证即可访问其他受信任应用。其原理基于信任机制,通过会话令牌实现身份验证。文中提到了两种实现方式:SAML-based SSO,利用SAML断言交换安全信息;OAuth 2.0-based SSO,通过授权码或访问令牌授权。实施SSO时需关注认证中心安全、令牌有效期、跨域通信及用户体验优化。
|
5月前
|
监控 安全 数据安全/隐私保护
探索 SSO 的世界:简化登录流程的最佳实践(下)
探索 SSO 的世界:简化登录流程的最佳实践(下)
探索 SSO 的世界:简化登录流程的最佳实践(下)
|
5月前
|
存储 缓存
实现单点登录的方式
实现单点登录的方式
77 1
|
5月前
|
存储 缓存 数据安全/隐私保护
探索 SSO 的世界:简化登录流程的最佳实践(上)
探索 SSO 的世界:简化登录流程的最佳实践(上)
探索 SSO 的世界:简化登录流程的最佳实践(上)
|
11月前
|
前端开发
淘东电商项目(33) -SSO单点登录(改造SSO认证服务登录界面)
淘东电商项目(33) -SSO单点登录(改造SSO认证服务登录界面)
72 0
|
11月前
|
移动开发 NoSQL Redis
淘东电商项目(35) -SSO单点登录(登录功能完善)
淘东电商项目(35) -SSO单点登录(登录功能完善)
77 0
|
11月前
|
Java Maven
淘东电商项目(32) -SSO单点登录(集成SSO认证服务)
淘东电商项目(32) -SSO单点登录(集成SSO认证服务)
74 0
|
存储 JSON 安全
【权限设计系列】「认证授权专题」微服务架构的登陆认证问题
【权限设计系列】「认证授权专题」微服务架构的登陆认证问题
771 0
【权限设计系列】「认证授权专题」微服务架构的登陆认证问题
|
安全 Java 数据库
8-企业权限管理-登陆
8-企业权限管理-登陆
8-企业权限管理-登陆
|
存储 Web App开发 缓存
单点登录解决方案
单点登录在实际项目中应用的比较广泛,那么,遇到单点登录时,该怎样去解决呢
单点登录解决方案