一、目标

这一章节的目标主要是讲解第一次打开系统,无论OA系统,还是认证系统等,在未登录的情况下怎么统一跳转至SSO登录页面。client 用OA系统代替更直观
视频讲解地址https://www.bilibili.com/video/BV1qB4y117Lj/

二 、系统UML工程类图


SmartSsoConfig、LoginFilter、LoginController这三个类是主要的实现类

三、代码实现

1.com.yuantai.config.SmartSsoConfig

@Configuration
public class SmartSsoConfig {@Value("${sso.server.url}")private String serverUrl;@Value("${sso.app.id}")private String appId;@Value("${sso.app.secret}")private String appSecret;/*** 单点登录Filter容器* @return*/@Beanpublic FilterRegistrationBean<SmartContainer> smartContainer() {SmartContainer smartContainer = new SmartContainer();smartContainer.setServerUrl(serverUrl);smartContainer.setAppId(appId);smartContainer.setAppSecret(appSecret);// 忽略拦截URL,多个逗号分隔smartContainer.setExcludeUrls("/login,/logout,/oauth2/*,/custom/*,/assets/*");smartContainer.setFilters(new LogoutFilter(), new LoginFilter());FilterRegistrationBean<SmartContainer> registration = new FilterRegistrationBean<>();registration.setFilter(smartContainer);registration.addUrlPatterns("/*");registration.setOrder(1);registration.setName("smartContainer");return registration;}
}
  • smartContainer() 初始化了参数、注册SmartContainer过滤器
  • SmartContainer过滤器存储了基础参数、doFilter对登录进行验证处理

2.com.yuantai.filter.LoginFilter

  • isAccessAllowed()方法判断登录三种情况(已登录、第一次登录成功、未登录)
  • redirectLogin(request, response); 属于第三种情况未登录、重定向到SSO统一登录页面(http://authentication.sso.com:8080/login?appId=xxx&redirectUri=http://xxx.sso.com:8080/)

3.com.yuantai.controller.LoginController

 /*** 登录页* @param redirectUri* @param appId* @param request* @return*/@RequestMapping(method = RequestMethod.GET)public String login(@RequestParam(value = SsoConstant.REDIRECT_URI, required = true) String redirectUri,@RequestParam(value = Oauth2Constant.APP_ID, required = true) String appId,HttpServletRequest request) throws UnsupportedEncodingException {String tgt = sessionManager.getTgt(request);if (StringUtils.isEmpty(tgt)) {return goLoginPath(redirectUri, appId, request);}return generateCodeAndRedirect(redirectUri, tgt);}

当2步发起重定向后会跳转到login的方法(GET请求)跳转到统一的SSO登录页面

总结

  • 客户端发起请求,这3步完成了统一跳转至SSO登录页面。
  • 动手是学习起来最快的方式,不要让眼睛是感觉看会了,但上手操作就废了。也希望有需要的读者可以亲手操作一下,把你的想法也融入到可落地实现的代码里,看看想的和做的是否一致。

代码下载方式

搜索微信公众号:攻城狮小章鱼 ,关注后 ,发SSO源码获取源代码

手撸SSO单点登录(三):统一跳转至SSO登录页相关推荐

  1. SpringCloud入门 —— SSO 单点登录

    前言 本文适合初学者,如有不足或错误之处,还请大家在下方留言指正.(文章稍长,建议点赞收藏) 一.SSO单点登录是什么? 单点登录简介 单点登录SSO (Single Sign On) 是指在一个多系 ...

  2. 实现SSO单点登录的思考

    关注 "Java艺术" 我们一起成长! 随着公司业务的发展,子系统越来越多,实现SSO单点登录的需求就愈加迫切. 我们一些子系统中都有使用Redis存储Session,这最初是为了 ...

  3. 简单入门SSO单点登陆——认证服务

    SSO在我们的应用中非常常见,例如我们在OA系统登录了,我们就可以直接进入采购系统,不需要再登录了,这样使我们非常方便.现在网上也有很多实现方法,于是乎我也想写一个看看.我主要用到的是cookie的机 ...

  4. 《SSO系列二》自己动手写一个SSO

    概述 上篇博客http://blog.csdn.net/bingospunky中大概的介绍了一下SSO.这篇文章介绍一个我学习过程中写的一个Demo,可以让初学者对SSO有一个整体的认识. 线上演示 ...

  5. 手撸SSO单点登录(五)登录验证-OA系统页面刷新或者跳转新OA系统页面

    目标  上一章节手撸SSO单点登录(四)登录验证-首次登录已经成功登陆并且跳转至OA系统,当OA系统刷新,或者OA系统打开其他菜单是怎么实现无需登陆,直接验证通过,跳转页面或者刷新页面. 视频详细讲解 ...

  6. 手撸SSO单点登录(六)SSO单点退出原理

    目标 这一章节我们来一起学习,单点退出登录,是怎么让所有sso系统一起退出登录的. 视频详细讲解请见https://www.bilibili.com/video/BV14A4y1S7HP/ 时序图 当 ...

  7. 手撸SSO单点登录(一):序言

    开源地址: 代码下载地址在最后面 功能介绍 本篇是基于HttpSession技术实现的单点登录,权限认证基于标准OAuth2协议.支持分布式Session共享的SSO单点登录功能. HttpSessi ...

  8. SSO单点登录三种情况的实现方式详解

    SSO单点登录三种情况的实现方式详解 单点登录(SSO--Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子 ...

  9. sso 登出_最强SSO单点登录教程(三)单点注销流程分析

    一.前言 单点登录自然也要单点注销,在一个子系统中注销,所有子系统的会话都将被销毁,用下面的图来说明: 单点注销流程 步骤分析: 1.用户在CRM系统中点击注销按钮.会重定向到统一认证中心的注销方法 ...

最新文章

  1. objective-C NSNotificationCenter (通知)的使用方法
  2. pymysql的相关操作
  3. 2.3 Logistic 回归损失函数-深度学习-Stanford吴恩达教授
  4. C++ Boost在Windows和Linux下的编译安装
  5. node内存配置(--max-old-space-size)
  6. spring pom设置_Spring社交Twitter设置
  7. java约瑟夫环迭代器_Josephus约瑟夫环问题的不同实现方法与总结
  8. Stanford公开课《编译原理》学习笔记(2)递归下降法
  9. JavaScript计算指定日期与当前日期的相差天数
  10. 字节跳动武汉招聘 2000 人,距离大厂 Offer,你还差这篇 Java 干货!| 原力计划...
  11. IOS开发-我的第一个IOS程序
  12. mac git 冲突工具
  13. 软件开发过程中最重要的是人?还是领导者?
  14. 李宇春-唐人街无损品质mp3-flac音乐歌曲网盘免费下载
  15. 非洲正在打造一个与硅谷完全不同的人工智能产业
  16. 企业IP地址管理(IPAM)
  17. Fallout 4 辐射4 技巧统计
  18. python小游戏毕设 俄罗斯方块小游戏设计与实现 (源码)
  19. C语言中scanf与分隔符(空格回车Tab)
  20. 四六级热点词汇总结疫情、文化、社会热点、脱贫等

热门文章

  1. 【web小票打印】谷歌浏览器跳过预览直接打印(lodop)
  2. 滴滴打车的笔试题【用例设计题目】【杭州多测师】【杭州多测师_王sir】
  3. obs 防火墙阻止连接_如何扩展Windows防火墙并轻松阻止传出连接
  4. oak深度相机入门教程-识别车辆车牌
  5. python log模块_python日志模块logbook使用方法
  6. tomcat8注册表删除某一值时,提示“无法删除所有指定的值”下图详解,tomcat8.exe 启动“显示该电脑无法运行此软件“,service.bat install...等无法安装和卸载,拒绝访问
  7. matlab拓扑优化流程图,matlab 拓扑优化 A variety of MATLAB topological optimi - DSSZ
  8. WIN10打印机如何连接到计算机,无线打印机怎么连接win10电脑-WIN10连接无线打印机的方法 - 河东软件园...
  9. PS学习记录-矢量图和位图
  10. Ubuntu root切换