springsecurity基于oauth2的sso单点登录怎样做?一个注解搞定

author author     2023-03-10     441

关键词:

参考技术A

单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼。本文主要介绍 同域 和 跨域 两种不同场景单点登录的实现原理,并使用 Spring Security 来实现一个最简单的 跨域 SSO客户端 。

 

单点登录主流都是基于共享 cookie 来实现的,下面分别介绍 同域 和 跨域 下的两种场景具体怎样实现共享 cookie 的

适用场景: 都是企业自己的系统,所有系统都使用同一个一级域名通过不同的二级域名来区分。

举个例子: 公司有一个一级域名为 zlt.com ,我们有三个系统分别是: 门户系统(sso.zlt.com) 应用1(app1.zlt.com) 应用2(app2.zlt.com) ,需要实现系统之间的单点登录,实现架构如下:

核心原理:

 

单点登录之间的系统域名不一样,例如第三方系统。由于域名不一样不能共享 Cookie 了,这样就需要通过一个单独的授权服务(UAA)来做统一登录,并基于共享UAA的 Cookie 来实现单点登录。

举个例子: 有两个系统分别是: 应用1(webApp.com) 应用2(zlt.com) 需要实现单点登录,另外有一个 UAA授权中心(sso.com) ,实现架构如下:

核心原理:

 

 

Oauth2单点登录 除了需要 授权中心 完成统一登录/授权逻辑之外

各个系统本身(sso客户端)也需要实现以下逻辑:

以上逻辑只需使用一个 @EnableOAuth2Sso 注解即可实现

SpringBoot配置如下:

下图是访问 sso客户端 时 @EnableOAuth2Sso 注解与 UAA授权中心 通过 Oauth2授权码模式 交互完成单点登录的步骤

PS :如果系统用的不是 Spring Security 怎么办?理解原理自行实现

 

https://gitee.com/zlt2000/microservices-platform/tree/master/zlt-demo/sso-demo

 
扫码关注有惊喜!

springsecurity基于oauth2的sso单点登录怎样做?一个注解搞定

...绍同域和跨域两种不同场景单点登录的实现原理,并使用SpringSecurity来实现一个最简单的跨域SSO客户端。 单点登录主流都是基于共享cookie来实现的,下面分别介绍同域和跨域下的两种场景具体怎样实现共享cookie的适用场景:... 查看详情

springcloudsecurity[微服务安全](一)初识springcloudsecurity和oauth2.0

参考技术A在介绍SpringCloudSecurity之前,我们先要介绍一下SpringSecurity。SpringSecurity是一套提供了完整的声明式安全访问控制的解决方案。SpringSecurity是基于SpringAOP和Servlet过滤器的,它只能服务基于Spring的应用程序。除常规认证和授... 查看详情

使用springsecurity体验oauth2(入门2)

  本文继续使用SpringSecurity从实战角度对OAuth2进行体验,上一篇 搭建了项目环境,并对配置做了初步分析,分析发现会有两套配置可能在影响OAuth,一个是由授权服务的启动类上的注解@EnableAuthorizationServer引出的,另一个则... 查看详情

使用oauth2和匿名访问的springsecurity

我使用SpringSecurity和OAuth2保护了SpringRESTAPI,我可以成功检索令牌并访问我的API。我的应用程序自己定义OAuth2客户端。现在我希望用户对某些资源进行匿名访问。用例非常简单:我希望我的应用程序无需登录即可使用-但如果他们... 查看详情

springsecurity实现oauth2.0授权服务-进阶版

 《SpringSecurity实现OAuth2.0授权服务-基础版》介绍了如何使用SpringSecurity实现OAuth2.0授权和资源保护,但是使用的都是SpringSecurity默认的登录页、授权页,client和token信息也是保存在内存中的。 本文将介绍如何在SpringSecurityOAu... 查看详情

springsecurity结合oauth2实现第三方授权

参考技术A流程【A服务客户端】需要用到【B服务资源服务】中的资源使用场景授权码模式是OAuth2中最安全最完善的一种模式,应用场景最广泛,可以实现服务之间的调用,常见的微信,QQ等第三方登录也可采用这种方式实现。说... 查看详情

springsecurity的oauth2的授权服务器配置(代码片段)

OAUTH2概念里有资源服务器与授权服务器先看授权服务的配置通常,我们会写一个AuthorizationServerConfiguration类继承自AuthorizationServerConfigurerAdapter,并且在类上加@Configuration注解授权服务器的配置@Configuration@EnableAuthorizationServerpu... 查看详情

springcloud最新版发布,springsecurity+oauth2终于安排上了!(代码片段)

大家好,我是栈长。今天给大家通报一则框架更新消息,时隔两个月,SpringCloud2021.0.5最新版发布了,来看下最新的SpringCloud版本情况:SpringCloud无疑是现在Java微服务事实上的标准,完全基于SpringBoot构建ÿ... 查看详情

springsecurity---oauth2详解(代码片段)

SpringSecurity---Oauth2详解OAuth2需求场景OAuth2授权的流程OAuth2四种授权模式回顾OAuth2.0OAuth2.0与Spring社区现状SpringSecurity5.2不支持认证服务器实现授权码模式认证服务器maven坐标加载资源拥有者数据----用户认证服务器(授权码模式)获取... 查看详情

springsecurity与oauth2(介绍)

https://www.jianshu.com/p/68f22f9a00eeSpringSecurity与OAuth2(介绍)林塬2018.01.2311:14*字数3097阅读3660评论1喜欢6个人OAuth2全部文章SpringSecurity与OAuth2(介绍):https://www.jianshu.com/p/68f22f9a00eeSpringSecurity与OAuth2(授权服 查看详情

springsecurity与oauth2介绍

个人OAuth2全部文章SpringSecurity与OAuth2(介绍):https://www.jianshu.com/p/68f22f9a00eeSpringSecurity与OAuth2(授权服务器):https://www.jianshu.com/p/227f7e7503cbSpringSecurity与OAuth2(资源服务器):https://www.jianshu.com/p/6d 查看详情

springsecurity与oauth2介绍

个人OAuth2全部文章SpringSecurity与OAuth2(介绍):https://www.jianshu.com/p/68f22f9a00eeSpringSecurity与OAuth2(授权服务器):https://www.jianshu.com/p/227f7e7503cbSpringSecurity与OAuth2(资源服务器):https://www.jianshu.com/p/6d 查看详情

使用 oAuth2.0 和表单登录的 Spring Security

】使用oAuth2.0和表单登录的SpringSecurity【英文标题】:SpringSecuritywithoAuth2.0andformlogin【发布时间】:2021-08-2418:39:00【问题描述】:在我的SpringBoot应用程序中,我使用基于表单的登录和基于oAuth2.0的Google登录,我的安全配置定义为htt... 查看详情

如何在 grails 和现有 oauth2 提供程序中使用 Spring Security 实现基于表单的登录

】如何在grails和现有oauth2提供程序中使用SpringSecurity实现基于表单的登录【英文标题】:Howtoimplementform-basedloginwithspringsecurityingrailsandexistingoauth2provider【发布时间】:2017-12-1715:06:53【问题描述】:大家好,我有一个新手grails/spring... 查看详情

深入oauth2核心源码,阿里p8的springsecurity手册惊呆我了

SpringSecurity是一个能够为基于Spring的企业应用系统提供描述性安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了SpringIoC(依赖注入,也称控制反转)和AOP(面向... 查看详情

springsecurity实战内容:oauth2授权回调的处理机制(代码片段)

...de/*,所以我们只要找到拦截回调的过滤器就可以知道SpringSecurity是如何处理回调了。通过搜索确认了OAuth2LoginAuthenticationFilter就是处理回调的过滤器。OAuth2LoginAuthenticationFilter第三方认证服务器在调用redirect_uri时附加code和state... 查看详情

使用springsecurity登录认证,通过oauth2.0开发第三方授授权访问资源项目详解(代码片段)

1.OAuth2.0简介OAuth2.0提供者机制负责公开OAuth2.0受保护的资源。该配置包括建立可独立或代表用户访问其受保护资源的OAuth2.0客户端。提供者通过管理和验证用于访问受保护资源的OAuth2.0令牌来实现。在适用的情况下,提供商还必须... 查看详情

springsecurity的oauth2的授权服务器配置(代码片段)

OAUTH2概念里有资源服务器与授权服务器先看授权服务的配置通常,我们会写一个AuthorizationServerConfiguration类继承自AuthorizationServerConfigurerAdapter,并且在类上加@Configuration注解授权服务器的配置@Configuration@EnableAuthorizationServerpu... 查看详情