github地址:https://github.com/hankuikuide/microservice-spring-security-oauth2

项目介绍

该项目是一个演示项目,主要演示了,基于spring boot2.0+spring security +oauth2.0+ jwt构建的,单点登录SSO和统一认证和授权的微服务架构项目

该项目是一个多模块项目:

authorization-server:是一个认证服务器

  • 通常情况下,认证服务器也是一个资源服务器用于向其他服务提供用户及权限信息。
  • 标准的OAuth2.0提供了四种认证模式,所以认证服务器也应该支持这四种认证模式,具体采用何种模式,应由客户端根据业务需求决定, 如SSO比较适合授权码模式,客户端有自己的登录时,适合密码模式,服务间的认证可以用客户端模式。
  • 为了提高token的安全性,及减轻认证服务器的压力,采用token+jwt的方式,演示代码没有用rsa。

client:是客户端的应用程序

网上多数的项目客户端都是采用纯js写,或用postman发请求,和实际项目的应用还是有差距的,这里也是采用spring boot的实现。 主要功能在于:

  • 使用授权码模式进行认证。
  • 使用OAuth2RestTemplate发送请求给认证服务器和资源服务器,
  • 结合Feign实现loadbalance.

client2:也是客户端的应用程序

网上多数的项目客户端都是采用纯js写,或用postman发请求,和实际项目的应用还是有差距的,这里也是采用spring boot的实现。 主要功能在于:

  • 使用授权码模式进行认证。
  • 使用OAuth2RestTemplate发送请求给认证服务器和资源服务器,
  • 结合Zuul网关实现请求转发给资源服务器.这也是区别于client的地方

##client与client2的主要作用:

  • 演示SSO,只要一个客户端登录成功,另一个应用,也就自动登录成功。
  • 演示SSO,只要一个客户端退出,另一个应用,也就自动退出。
  • 分别用Feign和Zuul网关实现对资源服务器的访问

resource-server:是资源服务器,也是微服务

资源服务器只实现了一个,另一个同时,只是注意jwt的配置即可。

resource2-server:是资源服务器,也是微服务

同上

##两个资源服务器的意义在于:

  1. 通常微服务架构中,微服务都是多个
  2. 微服务之间通过会有访问,这里使用的是feign:resource访问resource2
  3. 微服务之间应该也应该是有认证,这里使用是client_credentials模式

主要集成了以下技术和工具

  • Spring boot2.0
  • Spring Security
  • OAuth2.0
  • JWT
  • Feign
  • Zuul
  • cors

基于spring boot2.0+spring security +oauth2.0+ jwt微服务架构的更多相关文章

  1. 基于Spring Boot和Spring Cloud实现微服务架构学习

    转载自:http://blog.csdn.net/enweitech/article/details/52582918 看了几周Spring相关框架的书籍和官方demo,是时候开始总结下这中间的学习感 ...

  2. 基于Spring Boot和Spring Cloud实现微服务架构学习--转

    原文地址:http://blog.csdn.net/enweitech/article/details/52582918 看了几周spring相关框架的书籍和官方demo,是时候开始总结下这中间的学习 ...

  3. 基于Spring Boot和Spring Cloud实现微服务架构

    官网的技术导读真的描述的很详细,虽然对于我们看英文很费劲,但如果英文不是很差,请选择沉下心去读,你一定能收获好多.我的学习是先从Spring boot开始的,然后接触到微服务架构,当然,这一切最大的启 ...

  4. 几种常见的微服务架构方案简述——ZeroC IceGrid、Spring Cloud、基于消息队列

    微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...

  5. 几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm

    微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...

  6. 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事

    微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...

  7. Spring Boot、微服务架构和大数据

    一文读懂 Spring Boot.微服务架构和大数据治理三者之间的故事 https://www.cnblogs.com/ityouknow/p/9034377.html 微服务架构 微服务的诞生并非偶 ...

  8. Spring Cloud微服务架构升级总结

    ↵ [编者的话]微服务的概念源于 2014 年 3 月 Martin Fowler 所写的一篇文章“Microservices”.文中内容提到:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组 ...

  9. 7个点说清楚spring cloud微服务架构

    前言 spring cloud作为当下主流的微服务框架,让我们实现微服务架构简单快捷,spring cloud中各个组件在微服务架构中扮演的角色如下图所示,黑线表示注释说明,蓝线由A指向B,表示B从A ...

随机推荐

  1. Jackson和fastjson简单用法及性能对比

    背景: Java处理JSON数据有三个比较流行的类库FastJSON.Gson和Jackson.fastjson是阿里做的国有开源Java工具包,jackson是spring mvc内置的json转换 ...

  2. 实习模块vue+java小型全栈开发(三)

    实习模块vue+java小型全栈开发(三) --dx 背景 首先,先给自己一个答案:这篇博客我定义为(三),因为之前的两个模块页面,内容都是一样的,但是被改了几次需求,就一直拖着没有上传. 今天是真正 ...

  3. Tensorflow2.0变化

    https://baijiahao.baidu.com/s?id=1627307436158652578&wfr=spider&for=pc https://zhidao.baidu. ...

  4. 关于Struts2_2.3.24中FilterDispatcher过期的问题

    今天在使用最新版Struts2.3.24时,总是报出如下警告: ******************************************************************** ...

  5. 通过PPA存储库在UBUNTU或LINUX MINT中安装ORACLE JAVA 8 [JDK8]

    http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html sudo add-apt-repository ...

  6. springboot(一).初识springboot以及基本项目搭建

    初识springboot 以及基本项目搭建 由于新的项目需要搭建后台框架,之前的springmvc架构也使用多次,在我印象中springboot的微服务架构更轻量级更容易搭建,所以想去试试spring ...

  7. sqli-lab(8)

    布尔型单引号GET盲注 发现加个单引号跟没加显示不一样,加了单引号连you are in都不显示了,没有报错,所以只能用盲注判断了 0X01爱之先了解 盲注需要掌握一些MySQL的相关函数:lengt ...

  8. 步步向前之Element-UI

    Table 固定表头 只要在el-table元素中定义了height属性,即可实现固定表头的表格,而不需要额外的代码.例如: <el-table :data="tableData3&q ...

  9. python之正则匹配match:search findall

    match:从开头位置匹配,只匹配一次,开头匹配不上,则不继续匹配 a,b,\w+ match(a,"abcdef") 匹配a >>> re.match(&quo ...

  10. jieba(结巴)常用方法

    python jieba库的基本使用   第一步:先安装jieba库 输入命令:pip install jieba jieba库常用函数: jieba库分词的三种模式: 1.精准模式:把文本精准地分开 ...