目前单点登录的两种常用方法

本文介绍了在微服务架构下实现单点登录的两种常见方法:使用Cookie+Redis以及基于JWT(JSON Web Token)的令牌实现。详细阐述了每种方法的工作原理和步骤,并对JWT进行了深入解析,包括其组成和在项目中的整合方法。适合希望了解单点登录解决方案的开发者阅读。
摘要由CSDN通过智能技术生成

使用场景

面对现在市场上比较火的架构风格:微服务,使得我们在登录方面有所顾虑,当我们在一个模块中登录,到了另外一个模块,因为另外一个模块可能部署在其他的服务器上,导致我们可能一个模块要进行一次登录,这是不可取的,我们想要的效果是在一个项目中,多个模块中只需要在其中一个模块登录一次然后就可以实现所有模块的访问,也就是单点登录

使用cookie+redis实现

1、当我们在项目中的一个模块进行登录时,会把数据放到cookie和redis当中。

  • redis(基于key-value存储)
    在key中生成唯一的值(可以是ip地址、用户id、uid等,根据需要决定)
    在value中存放用户数据

  • cookie
    将redis里面的key值放到cookie中

2、当我们访问项目其他模块时,发送请求会带上cookie,获取cookie的值,拿到值在redis进行查询,查询到数据即登录成功,若查询不到,则进行登录,然后继续第一步的操作。

使用token(令牌)实现

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

现在常用的规则是使用JWT生成字符串。

1、当我们在项目中的一个模块进行登录时,会把用户数据按照规则生成字符串,然后返回字符串

  • 可以将字符串通过cookie返回
  • 可以将字符串通过地址栏返回
  • 可以将字符串放到请求头返回

2、当我们访问项目其他模块时,根据上述不同形式的返回去获取到token字符串,根据字符串的规则去尝试获取用户信息,如果获取到,则登录成功,获取不到则进行登录,重复第一步的操作。

JWT

JWT简介

Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准,该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。

JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。

JWT生成的字符串包含三部分

  • jwt头信息
  • 有效载荷(用户信息)
  • 签名哈希(防伪标志)

项目整合JWT

引入依赖

<dependencies>
    <!-- JWT-->
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
    </dependency>
</dependencies>

<properties>
	<jwt.version>0.7.0</jwt.version>
</properties>

导入工具类,工具类格式都是固定的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值