【CAS6.6源码解析】授权过程异常调试 (认证信息无效 <1 errors, 0 successes>)

本文主要是介绍【CAS6.6源码解析】授权过程异常调试 (认证信息无效 <1 errors, 0 successes>),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在CAS启动后,经常会出现第一次配置某种授权策略不熟悉,导致登录页面输入理想中正确的账号密码,实际上页面显示认证信息无效,查看控制台也没有报错,很是苦恼。这里分享一个从源码调试层面去解决这个问题的办法。


文章目录

  • 1.问题
  • 2.调试方法
  • 3.找到核心问题并解决


1.问题

场景:想新添加了一种是授权策略,但是因为不熟悉,大部分都只能从网上找一些解决方案,简单粗暴的复制粘贴尝试,输入理想中的账号密码后,发现认证信息无效,查看控制台信息,除了warn之外也没有什么报错,于是陷入了一种排查问题的窘境。

在这里插入图片描述
在这里插入图片描述

2.调试方法

这里以JDBC授权策略为例,尝试走一遍整个调试流程。其他问题都是这样的调试流程。

虽然上述场景里提到了没有任何报错,但是好在有一个warn,这个warn就是解决问题的关键。这个warn提示了有一个error,那么就尝试调试error是怎么产生的:

在这里插入图片描述
1.在DefaultCasDelegatingWebflowEventResolver类中添加断点,这里获取授权的handler时如果出现异常了,会进行处理,并且在控制台输出warn信息。(如果是源码调试可以直接搜到这个类,如果是overlay方式可以在IDEA反编译的class文件里断点调试)

在这里插入图片描述

2.正常输入账号密码,逐步步过调试异常产生于哪一行。比如我这里异常产生于69行,到了这一行,就直接跳进异常了。

在这里插入图片描述

在这里插入图片描述

3.查看exception的handlerErrors,查看堆栈,找到异常根源:

在这里插入图片描述

在这里插入图片描述
点击旁边的Navigate直接跳转到引起异常的代码处。
在这里插入图片描述

这样核心问题就找到了。

3.找到核心问题并解决

接下来,就是调试这个抛出异常的方法。这个和具体遇到的问题相关,这里调试下这个例子的问题。

通过调试可以发现,目前使用的是DefaultPasswordEncoder。
在这里插入图片描述
而默认Encoder,如果没有指定编码算法,将会直接返回null,这个null就会导致抛出异常:

在这里插入图片描述
所以这个问题的最终解决方案就是:

  • 不指定passwordEncoder,这样就不会去进行编码。
  • 或者指定编码的具体算法,如md5。
    在这里插入图片描述

ATFWUS 2023-07-21

这篇关于【CAS6.6源码解析】授权过程异常调试 (认证信息无效 <1 errors, 0 successes>)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/363457

相关文章

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很