随着公司项目的庞大,单点登录变得尤为重要,那么怎么实现单点登录,下面已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. [React Native]访问操作系统剪贴板 Clipboard

    我们之前学习了TextInput组件, 有时候我们需要在TextInput组件中复制或者粘贴一些文字. React Native为开发者提供了 Clipboard API,Clipboard 组件可以 ...

  2. 关于编码的发展演变:ASCII、GB2312、GBK、gb18030、Unicode、UTF-8

    [1]ASCII 每个字符占据1bytes(字节),第一次以规范标准发表是在1967年,最后一次修订是在1986年.用二进制表示的话最高位必须为0(扩展的ASCII不在考虑范围内),因此ASCII只能 ...

  3. UVa 926【简单dp,递推】

    UVa 926 题意:给定N*N的街道图和起始点,有些街道不能走,问从起点到终点有多少种走法. 很基础的dp.递推,但是有两个地方需要注意,在标记当前点某个方向不能走时,也要同时标记对应方向上的对应点 ...

  4. @atcoder - AGC035F@ Two Histograms

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个 N*M 的方格,我们通过以下步骤往里面填数: (1)将 ...

  5. Win10家庭版如何启用本地组策略

    组策略对于优化和维护Windows系统来说十分重要.众所周知,Windows 10家庭版中并不包含组策略,对于使用家庭版Windows的朋友来说,十分不方便.小编将以Windows10家庭版为例,带大 ...

  6. @总结 - 10@ Miller-Rabin素性测试与Pollard-Rho因数分解

    目录 @1 - 素性测试:Miller-Rabin算法@ @1.1 - 算法来源@ @1.2 - 算法描述@ @1.3 - 算法实现@ @2 - 因数分解:Pollard-Rho算法@ @2.0 - ...

  7. iOS学习--详解UIView的 contentStretch属性

    通过实例和图片理解UIView的contentStretch属性 方法 通过一个图片建立一个简单的UIImageView 设置它的contentStretch属性 修改它的frame属性 观察 测试用 ...

  8. php实现第三方登录

    1. oAuth2.0原理 网站为了方便用户快速的登录系统,都会提供使用知名的第三方平台账号进行快速登录的功能,第三方登录都是基于oAuth2.0标准来实现的.下面详细分析[基于账号密码授权]和[基于 ...

  9. Oracle数据字典全解

    一.概念: 1.数据字典(data dictionary)是 Oracle 数据库的一个重要组成部分,这是一组用于记录数据库信息的只读(read-only)表. 数据字典里存有用户信息.用户的权限信息 ...

  10. hdu 1430 魔板 (BFS+预处理)

    Problem - 1430 跟八数码相似的一题搜索题.做法可以是双向BFS或者预处理从"12345678"开始可以到达的所有状态,然后等价转换过去直接回溯路径即可. 代码如下: ...