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. C++ 打印XPS文档

    CoInitializeEx(, COINIT_MULTITHREADED); IXpsOMObjectFactory *xpsFactory; HRESULT hr = CoCreateInstan ...

  2. 'utf-8' codec can't decode byte 0xd0 in position 0问题

    今天利用pd.read_csv(url)从网络上读取数据时出现了如下错误: 'utf-8' codec can't decode byte 0xd0 in position 0 问题原因:网络上的这个 ...

  3. nginx 日志文件分隔

    Nginx命令 Nginx命令帮助如下 nginx -h nginx version: nginx/0.8.45 Usage: nginx [-?hvVt] [-s signal] [-c filen ...

  4. leetcode-mid-backtracking -22. Generate Parentheses-79 Word Search -NO

    mycode   错误,因为借鉴了Number of Islands问题中的方法,导致在for循环中即使已经出现了答案,也还会继续遍历.但是两个题目的不同时,island需要找出所有的情况,这个题只需 ...

  5. SpringMvc中ModelAndView模型的应用

    /** * 目标方法的返回值可以是 ModelAndView 类型. * 其中可以包含视图和模型信息 * SpringMVC 会把 ModelAndView 的 model 中数据放入到 reques ...

  6. JVM参数配置详解-包含JDK1.8

    堆大小设置    JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统下,一般限制在1.5G~2G:6 ...

  7. 编写shell脚本一键启动 重启 停止springboot项目

    #!/bin/bash #设置环境变量 export JAVA_HOME=/usr/local/jdk1.8.0_181 export JRE_HOME=/$JAVA_HOME/jre export ...

  8. C++ com 组件 事件 备忘

    [ object, uuid(AECE8D0C-F902--A374-ED3A0EBB6B49), dual, nonextensible, pointer_default(unique) ] int ...

  9. appium常见问题01_android筛选下拉框无法定位问题

    近期用appium做android自动化的过程中,遇到一种筛选下拉框,神奇的是,定位工具定位怎样都定位不到. 首先尝试用uiaotomator工具定位,无法定位到下拉框元素,只能定位到底层元素: 询问 ...

  10. 链路聚合teaming(网卡绑定技术)2

    一.sentos7网卡绑定技术之teaming 这里介绍两种最常见的双网卡绑定模式: (1) roundrobin - 轮询模式 所有链路处于负载均衡状态,这种模式的特点增加了带宽,同时支持容错能力. ...