spring security oauth2login 默认配置分析

版本

spring-security:6.2.1

源码

org.springframework.security.config.annotation.web.configurers.oauth2.client.OAuth2LoginConfigurer

public void init(B http) throws Exception {...if (this.loginPage != null) {// 使用自定义登录页面super.loginPage(this.loginPage);super.init(http);}else {// 获取登录连接Map<String, String> loginUrlToClientName = this.getLoginLinks();if (loginUrlToClientName.size() == 1) {// 如果只配置了一个客户端,则自动跳转到提供的登录页面this.updateAuthenticationDefaults();this.updateAccessDefaults(http);String providerLoginPage = loginUrlToClientName.keySet().iterator().next();this.registerAuthenticationEntryPoint(http, this.getLoginEntryPoint(http, providerLoginPage));}else {super.init(http);}}...// 配置OpenId Connect 认证提供者...// 初始化默认登录过滤器		this.initDefaultLoginFilter(http);}// 获取登录连接private Map<String, String> getLoginLinks() {...// 授权请求uri 默认为"/oauth2/authorization"String authorizationRequestBaseUri = (this.authorizationEndpointConfig.authorizationRequestBaseUri != null)? this.authorizationEndpointConfig.authorizationRequestBaseUri: OAuth2AuthorizationRequestRedirectFilter.DEFAULT_AUTHORIZATION_REQUEST_BASE_URI;Map<String, String> loginUrlToClientName = new HashMap<>();// 使用授权码模式的客户端构造授权请求连接 "/oauth2/authorization/客户端注册ID"clientRegistrations.forEach((registration) -> {if (AuthorizationGrantType.AUTHORIZATION_CODE.equals(registration.getAuthorizationGrantType())) {String authorizationRequestUri = authorizationRequestBaseUri + "/" + registration.getRegistrationId();loginUrlToClientName.put(authorizationRequestUri, registration.getClientName());}});return loginUrlToClientName;}// 初始化默认登录过滤器private void initDefaultLoginFilter(B http) {// 默认登录页生成过滤器(同时支持用户名密码表单, OAuth2, SAML2 模式)DefaultLoginPageGeneratingFilter loginPageGeneratingFilter = http.getSharedObject(DefaultLoginPageGeneratingFilter.class);if (loginPageGeneratingFilter == null || this.isCustomLoginPage()) {return;}// 启用OAuth2模式loginPageGeneratingFilter.setOauth2LoginEnabled(true);// 设置OAuth2认证连接loginPageGeneratingFilter.setOauth2AuthenticationUrlToClientName(this.getLoginLinks());loginPageGeneratingFilter.setLoginPageUrl(this.getLoginPage());loginPageGeneratingFilter.setFailureUrl(this.getFailureUrl());}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/635738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Webpack5入门到原理9:处理字体图标资源

1. 下载字体图标文件 打开阿里巴巴矢量图标库选择想要的图标添加到购物车&#xff0c;统一下载到本地 2. 添加字体图标资源 src/fonts/iconfont.ttfsrc/fonts/iconfont.woffsrc/fonts/iconfont.woff2src/css/iconfont.css/注意字体文件路径需要修改 src/main.js import { …

Python爬虫从入门到入狱系列合集

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

ES框架详解

ES框架详解 1、全文检索的介绍 ​ 那么对于一般的公司&#xff0c;初期是没有那么多数据的&#xff0c;所以很多公司更倾向于使用传统的数据库&#xff1a;mysql&#xff1b;比如我们要查找关键字”传智播客“&#xff0c;那么查询的方式大概就是:select * from table where …

公平与公正对团队的好处

公平与公正对团队的好处 如何联系我 作者&#xff1a;鲁伟林 邮箱&#xff1a;thinking_fioa163.com或vlinyes163.com 版权声明&#xff1a;文章和记录为个人所有&#xff0c;如果转载或个人学习&#xff0c;需注明出处&#xff0c;不得用于商业盈利行为。 一、什么是公平…

米贸搜|Facebook我的广告系列投放量不足、减慢或停了,怎么排查问题?

如果你在使用Meta Advantage广告系列预算&#xff0c;并且对目前得到的投放量不是很满意&#xff0c;可以重点关注下这篇内容。 正文开始之前再重申几个概念&#xff1a; 每日预算是一周内的平均每日支出&#xff0c;在一定的日子里可能会比我们的预算高出25%左右&#xff0c…

网络文件共享ftp

一&#xff0c;存储类型 &#xff08;一&#xff09;三种存储类型介绍 直连式存储&#xff1a;Direct-Attached Storage&#xff0c;简称DAS 直连&#xff1a;硬盘加服务器 存储区域网络&#xff1a;Storage Area Network&#xff0c;简称SAN&#xff08;可以使用空间&#…

解决Spring Boot应用打包后文件访问问题

在Spring Boot项目的开发过程中&#xff0c;一个常见的挑战是如何有效地访问和操作资源文件。这一挑战尤其显著当应用从IDE环境&#xff08;如IntelliJ IDEA&#xff09;迁移到被打包成JAR文件后的生产环境。开发者经常遇到的问题是&#xff0c;在IDE中运行正常的代码&#xff…

Android-三方框架的源码

ARouter Arouter的整体思路是moduelA通过中间人ARouter把路由信息的存到仓库WareHouse&#xff1b;moduleB发起路由时&#xff0c;再通过中间人ARouter从仓库WareHouse取出路由信息&#xff0c;这要就实现了没有依赖的两者之间的跳转与通信。其中涉及Activity的跳转、服务prov…

tomcat与servlet

目录 一、Http服务器 二、tomcat 1、概念 2、tomcat解压缩文件 &#xff08;1&#xff09;bin文件夹 &#xff08;2&#xff09;conf文件夹 &#xff08;3&#xff09;logs &#xff08;4&#xff09;webapps 3、借助tomcat服务器访问网页 三、servlet 1、概念 2、s…

vue异步更新队列

Vue 在更新 DOM 时是异步执行的。只要侦听到数据变化&#xff0c;Vue 将开启一个队列&#xff0c;并缓冲在同一事件循环中发生的所有数据变更。如果同一个 watcher 被多次触发&#xff0c;只会被推入到队列中一次。这种在缓冲时去除重复数据对于避免不必要的计算和 DOM 操作是非…

在微信公众号上怎么做报名链接_让你的活动报名与众不同

微信公众号报名链接&#xff1a;引领潮流&#xff0c;让你的活动报名与众不同 在这个信息爆炸的时代&#xff0c;微信早已成为我们生活中不可或缺的一部分。而微信公众号&#xff0c;更是成为了企业和个人传递信息、推广品牌的重要平台。如何在众多的微信公众号中脱颖而出&…

流量控制与熔断利器:Sentinel介绍

这是《百图解码支付系统设计与实现》专栏系列文章中的第&#xff08;19&#xff09;篇&#xff0c;也是流量控制系列的第&#xff08;6&#xff09;篇。点击上方关注&#xff0c;深入了解支付系统的方方面面。 本篇聊聊流量控制与熔断利器Sentinel&#xff0c;背后的原理&…

CVE-2024-0195 利用分析

1. 漏洞介绍 SpiderFlow爬虫平台项目中spider-flow-web\src\main\java\org\spiderflow\controller\FunctionController.java文件的FunctionService.saveFunction函数调用了saveFunction函数&#xff0c;该调用了自定义函数validScript&#xff0c;该函数中用户能够控制 functi…

系统架构设计师

软考系统架构设计师笔记 专用的成电路&#xff08;Application Specific Integrated Circuit&#xff0c;ASIC) PTR记录&#xff1a;Pointer Record&#xff0c;常被用于反向地址解析&#xff0c;即通过IP地址查询服务器域名。 软件工程 软件开发模型 【增量模型的优点】 …

大模型 RAG 面试篇

1.LLMs 存在模型幻觉问题&#xff0c;请问如何处理&#xff1f; 检索LLM。 先用问题在领域数据库里检索到候选答案&#xff0c;再用LLM对答案进行加工。 2.基于LLM向量库的文档对话 思路是怎么样&#xff1f; 加载文件读取文本文本分割文本向量化问句向量化在文本向量中匹配…

配置中心原理和选型

为什么需要配置中心&#xff1f; 缺乏整体管理&#xff0c;是配置管理变得低效 处于运维管理的需求 很容易导致实例的配置出现不一致的地方 生产环境多个集群直接修改配置&#xff0c;导致不一致 配置和代码在一起&#xff0c;配置修改需要重新发布&#xff0c;非常低效 目的是…

【C语言】编译和链接深度剖析

文章目录 &#x1f4dd;前言&#x1f320; 翻译环境和运行环境&#x1f309;翻译环境 &#x1f320;预处理&#xff08;预编译&#xff09;&#x1f309;编译 &#x1f320;词法分析&#x1f320;语法分析 &#x1f309;语义分析&#x1f320;汇编 &#x1f309; 链接&#x1f…

【教程】集群搭建准备工作全流程

基于VMware创建虚拟机进行集群搭建&#xff0c;适用于hadoop/GreenPlum等集群 之前已经创建了三台虚拟机hadoop102&#xff0c;hadoop103&#xff0c;hadoop104来搭建hadoop集群&#xff0c;因为目前学习到了greemplum&#xff0c;因此新建三台虚拟机hadoop105&#xff0c;had…

ubuntu下通过ssh在两台计算机之间拷贝文件

参考&#xff1a;Linux 远程连接之 SSH 新手指南 - 知乎 (zhihu.com) 1、查看是否安装ssh客户端 &#xff08;ubuntu下一般默认都安装了&#xff09; file /etc/ssh/ssh_config 有回复则表示安装了&#xff0c;否则会回复“No such file or directory” 2、查看是否安装ss…

[go] 迭代器模式

迭代器模式 提供一种方法顺序访问一个聚合对象中的各种元素&#xff0c;而又不暴露其内部的表示。 模型说明 Iterator: 接口声明了遍历集合所需的操作&#xff1a; 获取下一个元素、 获取当前位置和重新开始迭代等。 IterableCollection: 接口声明一个或多个方法来获取与集合…