随着公司项目的庞大,单点登录变得尤为重要,那么怎么实现单点登录,下面已oauth为标准实现单点登录。

【特别鸣谢:魔乐科技,附上官网:www.mldn.cn】

1:项目组织结构

本项目为oAuth修改的启动项目结构,在该结构之中基本定义模块如下:
1、microauth:定义公共的父pom文件,用于所有相关依赖包配置;

2、microauth-api:定义公共Service接口,同时在该接口上还提供有相应的Fallback配置、Feign配置注解、VO类定义;

3、microauth-eureka-server:Eurea注册与发现服务,所有微服务都注册到此处,该服务端口为7001;

4、microauth-provider-dept-8001:定义部门服务信息,该服务使用mldn8001数据库,同时提供有配置脚本,在本服务之中将主要结合MyBatis进行数据库操作,该微服务使用的是8001端口;

5、microauth-zuul-gateway-9501:zuul网关服务接口,运行在9501端口;

6、microauth-consumer:消费端微服务,主要通过zuul调用dept微服务;

所有的服务均没有配置Spring-Security开发包,只提供一个基本访问处理流程。

修改hosts文件,本次使用到的主机名称如下:

127.0.0.1 dept-8001.com
127.0.0.1 eureka-7001.com
127.0.0.1 gateway-9501.com
127.0.0.1 oauth-8080.com
127.0.0.1 consumer.com

项目的组织结构如下图,图中的oauth认证中心就是我们说的单点登录服务器,提供认证、授权保存服务;

下面要演示的就是怎么通过web客户端【springboot】访问我们的微服务,这里就是如图的部门微服务;

服务提供者暴露的接口如果是裸露的这是多么可怕的事情,所以我们要做的就很简单,怎么去访问我们这个受保护的服务;

现在的系统大都要求支持三高:高并发、高可用、高性能

所以,服务不做集群是不行的,集群你得有多个服务节点不是,你项目当中会有多少个微服务,你每一个微服务都要有多个节点的话,那我客户端怎么访问你哦?

注册中心帮我们解决了这一个难题,把你所有的服务都放到一个中心的位置去,我服务的调用者只关心你这个注册中心就可以了,此图为简要说明,先画了一个注册中心,

按理,注册中心也得集群处理。此图先不说明。

有的注册中心还不行,还是不能实现负载均衡呀,所以feign就出来了,feign是个啥玩意,它就是转门搞负载均衡的,让你的远程调用就像是本地的接口调用一样。

有的feign还不够,你还得来一层代理网关,帮你代理转发,那个东西就叫zuul。

2:目录结构

3:演示

a:启动注册中心,将部门微服务、和代理网关注册到注册中心当中

b:此时访问部门微服务是访问不了,因为加了安全认证

c:启动CAS单点登录服务器并访问

http://mermaid:hello@oauth-server.com:8080/oauth/authorize?client_id=cmldn&response_type=code&redirect_uri=http://www.baidu.com

d:使用curl 获取access_token

curl -X POST -H "Content-Type:application/x-www-form-urlencoded" -d "grant_type=authorization_code&code=cKXoVK&redirect_uri=http://www.baidu.com" "http://cmldn:cjava@oauth-server.com:8080/oauth/token"

e:拿到access_token就可以访问我们受保护的资源了

f:访问zuul代理网关需要登录

输入用户和密码就可以登录了

g:通过客户端【springboot】访问

springcloud玩转单点登录【oauth】的更多相关文章

  1. SpringCloud系列——SSO 单点登录

    前言 作为分布式项目,单点登录是必不可少的,文本基于之前的的博客(猛戳:SpringCloud系列——Zuul 动态路由,SpringBoot系列——Redis)记录Zuul配合Redis实现一个简单 ...

  2. 单点登录 - OAuth 2.0 授权码模式(一)

    OAuth 2.0定义了四种授权方式 授权码模式(authorization code) 简化模式(implicit) 密码模式(resource owner password credentials ...

  3. SpringCloud微服务实战——搭建企业级开发框架(四十):使用Spring Security OAuth2实现单点登录(SSO)系统

    一.单点登录SSO介绍   目前每家企业或者平台都存在不止一套系统,由于历史原因每套系统采购于不同厂商,所以系统间都是相互独立的,都有自己的用户鉴权认证体系,当用户进行登录系统时,不得不记住每套系统的 ...

  4. Spring Security构建Rest服务-1300-Spring Security OAuth开发APP认证框架之JWT实现单点登录

    基于JWT实现SSO 在淘宝( https://www.taobao.com )上点击登录,已经跳到了 https://login.taobao.com,这是又一个服务器.只要在淘宝登录了,就能直接访 ...

  5. springcloud微服务基于redis集群的单点登录

    springcloud微服务基于redis集群的单点登录 yls 2019-9-23 简介 本文介绍微服务架构中如何实现单点登录功能 创建三个服务: 操作redis集群的服务,用于多个服务之间共享数据 ...

  6. Casdoor + OAuth 实现单点登录 SSO

    简介 Casdoor 是一个基于 OAuth 2.0 / OIDC 的中心化的单点登录(SSO)身份验证平台,简单来说,就是 Casdoor 可以帮你解决用户管理的难题,你无需开发用户登录.注册等与用 ...

  7. spring cloud单点登录

    概述 基于springcloud的单点登录服务及基于zuul的网关服务(解决了通过zuul转发到认证服务之后session丢失问题) 详细 代码下载:http://www.demodashi.com/ ...

  8. SpringBootSecurity学习(26)前后端分离版之github单点登录

    单点登录(SSO) 关于oauth2.0,最后我们再来学习一下单点登录.前面介绍过单点登录的定义,单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一. ...

  9. 使用公钥私钥加密实现单点登录(SSO)

    Oauth2+Gateway+springcloud+springcloud-alibaba-nacos+jwt ,使用公钥私钥加密实现单点登录(OSS) github地址点这里 注意事项 GET: ...

随机推荐

  1. ASO优化经验:APP关键字优化的技巧

    当开发首款产品的时候,可能你根本连ASO是什么都不知道,因为有太多别的事情需要你做.大多数新手开发商甚至到游戏要进入Appstore的时候才知道有“关键字”这件事要去研究.正因为这些开发商几乎没有在关 ...

  2. iOS 避免循环导入及自定义控件delegate和protocol的相互引用的问题

    在OC中一般来说ClassA同ClassB想要避免重复import的话两种方案 1. 若ClassA.h 头文件中已经导入了ClassB,即#import "ClassB.h" , ...

  3. Python 3.x版本中的字符串

  4. Java注解初步了解 2016-07-24 22:20 240人阅读 评论(21) 收藏

    Java注解又称Java标注,是Java语言5.0版本开始支持加入源代码的特殊语法元数据. Java语言中的类.方法.变量.参数和包等都可以被标注.Java标注和Javadoc不同,标注有自反性.在编 ...

  5. CSS3摆动动画效果

    效果图:红包在左右摇晃 代码如下: @keyframes upAnimation { 0 % { transform: rotate(0 deg);transition - timing - func ...

  6. AutoCAD安装失败怎样卸载重新安装AutoCAD,解决AutoCAD安装失败的方法总结

    技术帖:AutoCAD没有按照正确方式卸载,导致AutoCAD安装失败.楼主也查过网上关于如何解决AutoCAD安装失败的一些文章,是说删除几个AutoCAD文件和AutoCAD软件注册表就可以解决A ...

  7. spring data jpa 原生sql 别名字段无法注入

    开发四年只会写业务代码,分布式高并发都不会还做程序员?->>>    在使用entityManager.createNativeQuery(sql,User.class)这个方法时, ...

  8. oracle 共享SQL语句

    为了不重复解析相同的SQL语句,在第一次解析之后, ORACLE将SQL语句存放在内存中.这块位于系统全局区域SGA(system global area)的共享池(shared buffer poo ...

  9. 《attention is all you need》解读

    Motivation: 靠attention机制,不使用rnn和cnn,并行度高 通过attention,抓长距离依赖关系比rnn强 创新点: 通过self-attention,自己和自己做atten ...

  10. Eclipsed的SVN插件不能识别之前工作空间的项目

    今天用Eclipse的SVN插件,由于之前项目是用"tortoisesvn"进行checkout的,并且已经在工作空间中使用.后来用来Ecplise的SVN插件,可是发现右键Tea ...