This commit is contained in:
fanxb 2019-03-05 13:39:08 +08:00
parent 38cb037129
commit 75dc392b8f
2 changed files with 33 additions and 0 deletions

View File

@ -0,0 +1,31 @@
---
id: '2019-03-01-18-52'
date: '2019/03/01 18:52'
title: 'spring boot 基于JWT实现单点登录'
tags: ['spring-boot', 'SSO', '单点登录', 'jwt']
categories:
- 'java'
- 'spring boot学习'
---
**本篇原创发布于:**[FleyX 的个人博客](http://tapme.top/blog/detail/2019-03-01-18-52)
照例配个图:
![塞尔达,林克](https://raw.githubusercontent.com/FleyX/files/master/blogImg/20190301190816.png)
<div style="text-align:center">看我大塞尔达,不!是林克</div>
&emsp;&emsp;最近我们组要给负责的一个管理系统 A 集成另外一个系统 B为了让用户使用更加便捷避免多个系统重复登录希望能够达到这样的效果——用户只需登录一次就能够在这两个系统中进行操作。很明显这就是**单点登录(Single Sign-On)**达到的效果,正好可以明目张胆的学一波单点登录知识。
本篇主要内容如下:
- SSO 介绍
- SSO 的几种实现方式对比
- 基于 JWT 的 spring boot 单点登录实现
**注意:**
&emsp;&emsp;SSO这个概念已经出现很久很久了目前各种平台都有非常成熟的实现比如`OpenSSO``OpenAM``Kerberos``CAS`等,当然很多时候成熟意味着复杂。本文不讨论那些成熟方案的使用,也不考虑SSO在CS应用中的使用。
# 什么是SSO
&emsp;&emsp;

View File

@ -16,6 +16,8 @@ categories:
&emsp;&emsp;微服务虽然能够将单体软件系统分解为更小的、更易于管理的小系统。但是这种特性是需要付出代价的。其中之一就是----调试困难。所以需要有一种办法能够将所有服务产生的消息聚合起来,方便的获取某一次用户请求的全部日志信息。本篇只解决将请求串起来这个问题,日志聚合需要对应的日志平台配合,这里不做讨论(其实就是将日志全部手机放到一个地方(比如es),再进行查询)。 &emsp;&emsp;微服务虽然能够将单体软件系统分解为更小的、更易于管理的小系统。但是这种特性是需要付出代价的。其中之一就是----调试困难。所以需要有一种办法能够将所有服务产生的消息聚合起来,方便的获取某一次用户请求的全部日志信息。本篇只解决将请求串起来这个问题,日志聚合需要对应的日志平台配合,这里不做讨论(其实就是将日志全部手机放到一个地方(比如es),再进行查询)。
<!-- more -->
(PS写这篇的时候突然发现前面那种实现关联id方法是错误的学习《spring微服务实战》过程中看到了不少错误单大都不是很重要的唯独关联id的那部分问题挺大。书上的实现是在每个服务中增加一个过滤器提取入站请求中的关联id然后存到ThreadLocal中然后给服务调用类Ribbon加一个过滤器用于从ThreadLocal中提取出关联id然后加入到请求的header中。这里的问题是前面的过滤器所在的线程和后面服务调用的线程不是同一个线程也就无法用ThreadLocal来进行数据保存。在Feign请求的过程中是获取不到保存的值的) (PS写这篇的时候突然发现前面那种实现关联id方法是错误的学习《spring微服务实战》过程中看到了不少错误单大都不是很重要的唯独关联id的那部分问题挺大。书上的实现是在每个服务中增加一个过滤器提取入站请求中的关联id然后存到ThreadLocal中然后给服务调用类Ribbon加一个过滤器用于从ThreadLocal中提取出关联id然后加入到请求的header中。这里的问题是前面的过滤器所在的线程和后面服务调用的线程不是同一个线程也就无法用ThreadLocal来进行数据保存。在Feign请求的过程中是获取不到保存的值的)
# 集成Spring Cloud Sleuth # 集成Spring Cloud Sleuth