SpringBootSecurity学习(26)前后端分离版之github单点登录
单点登录(SSO)
关于oauth2.0,最后我们再来学习一下单点登录。前面介绍过单点登录的定义,单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
关于单点登录,springcloud G版本的官方文档地址如下:
- https://cloud.spring.io/spring-cloud-static/Greenwich.SR3/single/spring-cloud.html#_single_sign_on
关于单点登录的例子有很多,最常见的就是我们在百度登录以后,百度网盘,百度知道,百度翻译等功能网站都会自动登录百度的账号,还有就是qq或者微信登录以后,其它腾讯的游戏等app也可以一键登录,等等。例子有很多。对于第三方授权的应用,不需要使用单点登录,但是对于同一个企业内的不同服务和软件之间的账号共享来说,单点登录是一个必要的功能。
SSO简单使用github实现
spring cloud oauth对sso是有支持的,而且使用和配置非常简单。可以使用第三方的授权服务,如GitHub,也可以自己构建授权服务。下面来用github实现一个简单的sso。
首先要去github上面登记一下,地址如下:
- https://github.com/settings/applications/new
这里我们不再自己去登记,而是使用官方文档中演示的登记好的id和秘钥:

clientId和clientSecret分别是:
bd1c0a783ccdd1c9b9e4
1a9030fbca47a5b2c28e92f19050bb77824b5ad1
而sso客户端的配置正如上面图片演示的一样。下面来新建两个项目,依赖只引入web和oauth:

项目的启动类中需要加入一个@EnableOAuth2Sso注解:

创建两个简单的接口:

最后就是配置文件的配置,基本上内容和官网的示例一样:

这里两个项目基本一样,另一个项目的代码和配置也是一样。security不写任何配置类,使用默认即可。
测试
启动两个项目,访问其中一个的/user接口:

会直接跳转到github的登录页面:

可以注意看一下上面地址栏中的地址,会非常熟悉。这里可以输入自己的github账号,然后点击登录,就会自动回跳到我们原来访问的/user地址:

可以看到,我们自己的项目自动登录成功了,并返回了当前的用户数据,这个用户其实就是github的账户。
现在上面的第一个项目已经登录成功,并访问了接口,下面来直接访问第二个项目:

可以看到第二个项目并没有再跳转登录,而是直接处于登录状态,并且账号信息与前面项目的一样。这就是简单sso的演示。
代码地址: https://gitee.com/blueses/spring-boot-security 37 38
本文由博客一文多发平台 OpenWrite 发布!
SpringBootSecurity学习(26)前后端分离版之github单点登录的更多相关文章
- Keycloak快速上手指南,只需10分钟即可接入Spring Boot/Vue前后端分离应用实现SSO单点登录
登录及身份认证是现代web应用最基本的功能之一,对于企业内部的系统,多个系统往往希望有一套SSO服务对企业用户的登录及身份认证进行统一的管理,提升用户同时使用多个系统的体验,Keycloak正是为此种 ...
- Jeecg-Boot前后端分离版
Jeecg-Boot前后端分离版http://www.jeecg.org/forum.php?gid=229 Jeecg-Boot 快速开发平台http://boot.jeecg.org/user/l ...
- SpringBootSecurity学习(12)前后端分离版之简单登录
前后端分离 前面讨论了springboot下security很多常用的功能,其它的功能建议参考官方文档学习.网页版登录的形式现在已经不是最流行的了,最流行的是前后端分离的登录方式,前端单独成为一个项目 ...
- SpringBootSecurity学习(13)前后端分离版之JWT
JWT 使用 前面简单介绍了把默认的页面登录改为前后端分离的接口异步登录的方法,可以帮我们实现基本的前后端分离登录功能.但是这种基本的登录和前面的页面登录还有一个一样的地方,就是使用session和c ...
- 前后端分离项目shiro的未登录和权限不足
在前后端分离的项目中.前端代码和后端代码几乎不在同一个目录下,甚至不是在一台服务器上:我这个项目部署在linux.同一台服务器,不同目录下:所有的页面跳转由前台路由,后台只是提供返回的数据: 干货↓ ...
- SpringBootSecurity学习(14)前后端分离版之 OAuth2.0介绍
登录总结 前面基本介绍了security的常规用法,同时介绍了JWT和它的一个简单实现,基本上开发中遇到的登录问题都能解决了,即使在分布式开发,或者微服务开发中实现登录也基本没有问题了.securit ...
- SpringBootSecurity学习(15)前后端分离版之 OAuth2.0简单示例
OAuth2.0 OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者.客户端来申请资源,资源所有者同意以后,资源服务器可以向客户端颁发令牌.客户端通过令牌,去请求数据.也就是说, ...
- SpringBootSecurity学习(17)前后端分离版之 OAuth2.0 数据库(JDBC)存储客户端
自动批准授权码 前面我们授权的流程中,第一步获取授权码的时候,都会经历一个授权是否同意页面: 这个流程就像第三方登录成功后,提问是否允许获取昵称和头像信息的页面一样,这个过程其实是可以自动同意的,需要 ...
- SpringBootSecurity学习(19)前后端分离版之OAuth2.0 token的存储和管理
内存中存储token 我们来继续授权服务代码的下一个优化.现在授权服务中,token的存储是存储在内存中的,我们使用的是 InMemoryTokenStore : 图中的tokenStore方法支持很 ...
随机推荐
- Mysql中有符号数和无符号数的区别
1原文地址:https://blog.csdn.net/s78365126/article/details/85048882 2可以手写sql验证一下 3mysql无符号和有符号的区别无符号unsig ...
- thinkphp6.0 集成Alipay 手机和电脑端支付的方法
本文由 BI8EJM 原创,转载请注明出处! 第一步 下载 Alipay 的PHP SDK :https://docs.open.alipay.com/54/103419/ 第二步 解压下载都到的压 ...
- 疑难杂症----windows7
这两天换了台win7的机器,每次开机发现时间日期没法更新,第一次手动更新后过了一天以后又恢复成20xx/01/01,头疼ing,网上找了好多办法,在这里记录一下,避免以后再碰到同样的问题. 出现这个问 ...
- Android开发中常用Dialog(普通弹窗&时间选择器&日历选择器)
引言 开发中,我们会有很多地方使用 Dialog 来展示一些提示信息或设置信息.如:用户提示.进度展示.时间设置.日期设置等. 下面我和大家一些学习下Android中常用的几种Dialog吧~ * 首 ...
- Tomcat部署spring boot项目
Tomcat部署spring boot项目 需要在启动类做修改
- [MySQL] 02- Optimisation solutions
前言 一.资源 MySQL 对于千万级的大表要怎么优化? - MySQL - 知乎[方法论] MySQL大表优化方案[一些优化的细节操作] MySQL大表优化方案[一些优化的细节操作] 分布式数据库下 ...
- [Leetcode][动态规划] 零钱兑换
一.题目描述 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: ...
- 一起看期待已久的.NET Core 3.0新的单文件部署特性,记在昨日VS2019更新后
VS2019又又又迎来一次新的更新,这次的重点在.NET Core, 妥妥的更新好,默默地反选2.2,一切都在意料之中. 这次我们来看VS2019的新特性单文件部署: https://www.talk ...
- Spring MVC-从零开始-@ResponseBody(未完待续)
Spring MVC-从零开始-@ResponseBody(未完待续)
- ibatis 学习
1.$与#的区别: 用到#和$来获取传的参数值,其中#是将传来的值替换(如果是字符串,会将‘’带着替换,比如上面$value$,用#value#的话,就会出错.#与$的使用区别:$中间的变量就是直接替 ...