springcloud玩转单点登录【oauth】
随着公司项目的庞大,单点登录变得尤为重要,那么怎么实现单点登录,下面已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】的更多相关文章
- SpringCloud系列——SSO 单点登录
前言 作为分布式项目,单点登录是必不可少的,文本基于之前的的博客(猛戳:SpringCloud系列——Zuul 动态路由,SpringBoot系列——Redis)记录Zuul配合Redis实现一个简单 ...
- 单点登录 - OAuth 2.0 授权码模式(一)
OAuth 2.0定义了四种授权方式 授权码模式(authorization code) 简化模式(implicit) 密码模式(resource owner password credentials ...
- SpringCloud微服务实战——搭建企业级开发框架(四十):使用Spring Security OAuth2实现单点登录(SSO)系统
一.单点登录SSO介绍 目前每家企业或者平台都存在不止一套系统,由于历史原因每套系统采购于不同厂商,所以系统间都是相互独立的,都有自己的用户鉴权认证体系,当用户进行登录系统时,不得不记住每套系统的 ...
- Spring Security构建Rest服务-1300-Spring Security OAuth开发APP认证框架之JWT实现单点登录
基于JWT实现SSO 在淘宝( https://www.taobao.com )上点击登录,已经跳到了 https://login.taobao.com,这是又一个服务器.只要在淘宝登录了,就能直接访 ...
- springcloud微服务基于redis集群的单点登录
springcloud微服务基于redis集群的单点登录 yls 2019-9-23 简介 本文介绍微服务架构中如何实现单点登录功能 创建三个服务: 操作redis集群的服务,用于多个服务之间共享数据 ...
- Casdoor + OAuth 实现单点登录 SSO
简介 Casdoor 是一个基于 OAuth 2.0 / OIDC 的中心化的单点登录(SSO)身份验证平台,简单来说,就是 Casdoor 可以帮你解决用户管理的难题,你无需开发用户登录.注册等与用 ...
- spring cloud单点登录
概述 基于springcloud的单点登录服务及基于zuul的网关服务(解决了通过zuul转发到认证服务之后session丢失问题) 详细 代码下载:http://www.demodashi.com/ ...
- SpringBootSecurity学习(26)前后端分离版之github单点登录
单点登录(SSO) 关于oauth2.0,最后我们再来学习一下单点登录.前面介绍过单点登录的定义,单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一. ...
- 使用公钥私钥加密实现单点登录(SSO)
Oauth2+Gateway+springcloud+springcloud-alibaba-nacos+jwt ,使用公钥私钥加密实现单点登录(OSS) github地址点这里 注意事项 GET: ...
随机推荐
- [React Native]访问操作系统剪贴板 Clipboard
我们之前学习了TextInput组件, 有时候我们需要在TextInput组件中复制或者粘贴一些文字. React Native为开发者提供了 Clipboard API,Clipboard 组件可以 ...
- 关于编码的发展演变:ASCII、GB2312、GBK、gb18030、Unicode、UTF-8
[1]ASCII 每个字符占据1bytes(字节),第一次以规范标准发表是在1967年,最后一次修订是在1986年.用二进制表示的话最高位必须为0(扩展的ASCII不在考虑范围内),因此ASCII只能 ...
- UVa 926【简单dp,递推】
UVa 926 题意:给定N*N的街道图和起始点,有些街道不能走,问从起点到终点有多少种走法. 很基础的dp.递推,但是有两个地方需要注意,在标记当前点某个方向不能走时,也要同时标记对应方向上的对应点 ...
- @atcoder - AGC035F@ Two Histograms
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个 N*M 的方格,我们通过以下步骤往里面填数: (1)将 ...
- Win10家庭版如何启用本地组策略
组策略对于优化和维护Windows系统来说十分重要.众所周知,Windows 10家庭版中并不包含组策略,对于使用家庭版Windows的朋友来说,十分不方便.小编将以Windows10家庭版为例,带大 ...
- @总结 - 10@ Miller-Rabin素性测试与Pollard-Rho因数分解
目录 @1 - 素性测试:Miller-Rabin算法@ @1.1 - 算法来源@ @1.2 - 算法描述@ @1.3 - 算法实现@ @2 - 因数分解:Pollard-Rho算法@ @2.0 - ...
- iOS学习--详解UIView的 contentStretch属性
通过实例和图片理解UIView的contentStretch属性 方法 通过一个图片建立一个简单的UIImageView 设置它的contentStretch属性 修改它的frame属性 观察 测试用 ...
- php实现第三方登录
1. oAuth2.0原理 网站为了方便用户快速的登录系统,都会提供使用知名的第三方平台账号进行快速登录的功能,第三方登录都是基于oAuth2.0标准来实现的.下面详细分析[基于账号密码授权]和[基于 ...
- Oracle数据字典全解
一.概念: 1.数据字典(data dictionary)是 Oracle 数据库的一个重要组成部分,这是一组用于记录数据库信息的只读(read-only)表. 数据字典里存有用户信息.用户的权限信息 ...
- hdu 1430 魔板 (BFS+预处理)
Problem - 1430 跟八数码相似的一题搜索题.做法可以是双向BFS或者预处理从"12345678"开始可以到达的所有状态,然后等价转换过去直接回溯路径即可. 代码如下: ...