OAuth2 与 Spring Security - InsufficientAuthenticationException

2024-02-29

我目前正在开发一个涉及 Spring Security(针对 OAuth2)的项目。

我们正在使用授权码流程。

但是,当客户端点击 AuthorizationEndpoint (/oauth/authorize) 时 我们得到一个“InsufficientAuthenticationException”。 这可能是由于该流程中也涉及外部系统,该系统为客户端执行重定向,将其发送到 /oauth/authorize 端点。

据我了解,通过查看调试日志文件和阅读源代码,AuthorizationEndpoint.authorize 方法中使用的主体为 null(特别是第 138 行,我们使用的是 spring-security-oauth2-2.0.7.RELEASE) 。

我明白 spring 的问题是什么(它不“知道”已经通过系统身份验证的用户),但我不明白 spring 具体使用哪些信息来识别用户(我想这将是我的核心问题)

我尝试使用正确的参数对 /oauth/authorize 执行 GET,并通过请求发送包含不记名访问令牌的授权标头,但 spring 总是抛出 InsufficientAuthenticationException。我希望有人能帮助我解决这个问题。

此致 附注


为了文档的目的,我将在这里回答我自己的问题。TJ https://stackoverflow.com/users/174184/tj基本上为我指明了正确的方向。

就我而言,InsufficientAuthenticationException 源于整个堆栈的稍微错误的设置。为了将内容传递给用户,使用了 apache,它也充当反向代理,截断部署在其后面的 tomcat 上的应用程序的根上下文。

最终解决我问题的答案可以找到here https://stackoverflow.com/questions/3980392/tomcat-7-session-cookie-path。 实际上问题是,会话 cookie 包含无效路径(路径属性仍然包含 rootcontext,因为 tomcat 还没有意识到它前面的 apache 正在将 rootcontext 截断为仅“/”。)因此设置通过 tomcat 的 context.xml 中的 setSessionCookie="/" 在 tomcat 端的路径就可以了。

因此,当重定向命中 spring 的 oauth/authorize 端点时,它会使用包含错误路径的会话 cookie 来执行此操作。因此,对于 Spring 来说,请求似乎源自未经身份验证的源,因此让我对 InsufficientAuthenticationException 感到摸不着头脑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OAuth2 与 Spring Security - InsufficientAuthenticationException 的相关文章

  • 设置 SWT Shell 的默认字体

    有没有办法为整个 Shell 设置默认字体 以便任何新控件都将使用相同的字体 看来现在我必须为我创建的每个控件设置字体 这导致了太多的冗余 默认使用的字体由平台选择 请参阅中的其他信息 类字体 SWT 标准小部件工具包 http book
  • 实现与扩展:何时使用?有什么不同?

    请用易于理解的语言进行解释或提供某些文章的链接 extends is for 延伸一类 implements is for 实施一个接口 接口和常规类之间的区别在于 在接口中您不能实现任何声明的方法 只有 实现 接口的类才能实现方法 C 中
  • @OneToMany 与 @JoinTable 错误

    我试图理解 OneToMany with JoinTable 对于这样的场景 我正在使用 JPA 2 1 Hibernate 5 0 4 和 Oracle 11 XE 当我打电话时userDao save user 下面的代码 我有 jav
  • 如何识别 Java 中的不可变对象

    在我的代码中 我正在创建一个对象集合 这些对象将由各种线程以只有在对象不可变的情况下才安全的方式访问 当尝试将新对象插入到我的集合中时 我想测试它是否是不可变的 如果不是 我将抛出异常 我能做的一件事是检查一些众所周知的不可变类型 priv
  • firebase推送通知错误Spring Boot服务器端

    我正在尝试从 Spring Boot 服务器端发送通知到客户端 android 服务器运行良好 一切都很好 2020 09 01 08 13 07 691 INFO 18941 restartedMain e DevToolsPropert
  • RSA SignatureException:签名长度不正确

    我在签署 rsa 签名时遇到问题 我有一个用私钥加密的签名 然而 当我尝试使用公钥验证它时遇到问题 我得到以下异常 java security SignatureException Signature length not correct
  • 要打乱的键值(整数、字符串)列表的最佳结构

    我需要在 Java 中实现一个结构 它是一个键值列表 类型为整数 字符串 并且我想对其进行洗牌 基本上 我想做类似的事情 public LinkedHashMap
  • 是否可以从另一个方法传递 args[] 来调用 main 方法?

    我试图从另一个传递参数的方法调用类的主要方法 就像从命令行运行该类时一样 有没有办法做到这一点 您可以致电main方法就像您调用任何其他 静态 方法一样 MyClass main new String arg1 arg2 arg3 Exam
  • BlackBerry SQLite:将一个 SQLite 数据库连接到另一个

    我正在尝试使用 SQLite 将一个 SQLite 数据库附加到 BlackBerry 上的另一个数据库附加数据库 http www sqlite org lang attach html命令 Database d1 d2 Statemen
  • Java 泛型:如何为泛型类型指定类类型?

    我有一个 POJO 指定为 MyClass u where U是泛型类型参数 我正在尝试编写一个接受类引用的实用方法Class u
  • C# 中的协变和逆变

    首先我要说的是 我是一名正在学习 C 编程的 Java 开发人员 因此 我会将我所知道的与我正在学习的进行比较 我已经使用 C 泛型几个小时了 我已经能够在 C 中重现我在 Java 中知道的相同内容 除了几个使用协变和逆变的示例 我正在读
  • 从 sbt 程序集运行 uber jar 会导致错误:无法找到或加载主类

    我有一个使用 sbt 程序集插件打包为 uber jar 的 Spark 作业 这build sbt指定一个可运行的 main 作为生成的 uber jar 的目标 mainClass in assembly Some com foo Ba
  • 不要模拟值对象:过于通用的规则,没有解释

    以下是 Mockito 单元测试框架的引用 不要模拟值对象 为什么有人会想要这样做呢 因为实例化对象太痛苦了 gt 无效 原因 如果创造新的装置太困难 那就是一个迹象 代码可能需要一些认真的重构 另一种方法是创建 价值对象的构建者 有一些工
  • Java:使用 Java.util.concurrent 线程访问读取线程串行端口

    我正在尝试编写一个 Java 串行设备驱动程序并想使用 对我来说是新的 java util concurrent包裹 我有一种发送数据包然后等待 ACK 的方法 我打算有炭 接收在不同的线程中运行 如果接收线程收到 ACK 它应该使用发送数
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • 在哪里可以获得用于导入 libcore.io 的 JAR?

    我想处理一个GaiException在我的应用程序中 调试器告诉我 它位于 libcore io 包中 但导入它会产生错误 我想我需要向我的项目添加一个额外的 JAR 才能正确解析此类型 我在我的 android sdk 文件夹中进行了一些
  • 为什么现在()? (客观化)

    为什么我想要异步加载 Objectify 实体 异步加载到底意味着什么 根据客观化有关加载的文档 https code google com p objectify appengine wiki BasicOperations Loadin
  • 在Java中多次读取System.in会导致IOException?

    我正在尝试创建一个小命令行游戏来强化我在过去几个月中在 Java 中学到的一些东西 我正在尝试创建一个名为 readInput 的方法 它返回一个我可以一次又一次调用的字符串 第一次它工作正常 但第二次它会导致 IO Exception 如
  • JMockit - 初始化问题

    当我使用以下测试时 我收到警告 警告 JMockit 是按需初始化的 这可能会导致某些测试失败 请检查文档以获取更好的初始化方法 这是我的测试实现 package test import static mockit Mockit impor
  • 编写自定义 Eclipse 调试器

    EDIT 一定有某种方法可以解决这个问题 而无需编写全新的调试器 我目前正在研究在现有 java 调试器之上构建的方法 如果有人对如何获取 Java 调试器已有的信息 有关堆栈帧 变量 原始数据等 有任何想法 那将非常有帮助 我想要做的是我

随机推荐

  • tkinter 的 .pack_propagate() 方法

    我正在尝试 Tkinter 因为我试图弄清楚是否有一种方法可以在不使用画布的情况下设置 tkinter 的窗口大小 我发现了这个如何关于 SO 问答的设置帧大小问题 https stackoverflow com questions 563
  • 使用通配符时,Javac 无法找到符号,但在手动指定 .java 文件时可以正常工作

    当我用这个编译器代码进行编译时 echo off javac d bin sourcepath src java src sign java src Alert java pause 我没有收到任何错误 但是当我用这段代码编译时 echo
  • JSplitPane 中分隔线移动的动画

    在我的代码中 UI 具有以下组件 JSplitPane pane1 JTable pane2 JPanel with some texutal information 我正在侦听表上的行选择事件 然后适当地设置分割窗格的分隔符位置 以便文本
  • 如何在我的 App.js 视图中导入和使用此文件

    我想将其导入到我的 React Native 项目 App Js vue 中 我尝试了很多方法 但它不起作用 我的意思是我想在我的视图中渲染它 我如何导入并在我的 Appjs 中显示此文件 谁能帮助我 这对我来说非常重要 这是我的代码 im
  • UIScrollView contentInset 属性有什么用?

    有人可以向我解释一下是什么吗contentInset财产在一个UIScrollView实例是用来做什么的 也许提供一个例子 它设置内容视图和封闭滚动视图之间的插图距离 Obj C aScrollView contentInset UIEdg
  • 解决 celerybeat 的单点故障问题

    我正在寻找推荐的解决方案来解决 celerybeat 成为 celery rabbitmq 部署的单点故障的问题 到目前为止 通过搜索网络 我没有找到任何有意义的东西 就我而言 定时调度程序每天启动一次可以运行半天或更长时间的一系列作业 由
  • contentView 在 iOS 6 UITableViewCell 原型单元格中不缩进

    我正在配置自定义UITableViewCell在故事板中使用原型单元 然而 所有的UILabels 和其他 UI 元素 似乎没有添加到单元格的contentView 而不是添加到UITableViewCell直接查看 当单元格进入编辑模式时
  • Chrome iframe 父级未定义

    我有这个 Gmail 脚本 它运行在canvas frame iframe 我想使用父文档的句柄parent document 但在 Chrome 中告诉我它是未定义的 在 Firefox 中工作正常 但在 Chrome 上就崩溃了 那么
  • 在SceneKit中,SCNLightTypeAmbient类型的SCNLight是否会忽略categoryBitMask参数?

    看来是啊 这里 categoryBitMask 被忽略 ambientLight SCNLight light ambientLight color UIColor colorWithRed 0 994 green 0 715 blue 0
  • iTunes 有哪些脚本目标?

    苹果有一个很好的文档技术问答页面 https developer apple com library mac qa qa1802 index html用于实现 Mail app 的脚本目标 然而 尽管脚本目标也适用于 iTunes 但没有可
  • 静态方法和扩展方法同名

    我创建了扩展方法 public static class XDecimal public static decimal Floor this decimal value int precision decimal step decimal
  • Vue2 在通过 Axios 接收的列表中搜索

    由于过滤比 Vue 1 中的过滤要复杂得多 所以我有一个问题 这是我的组件 其中显示了羊列表 并提供了搜索 过滤名称或家族的选项 但我不知道如何实现这一目标
  • 如何将配置变量发送到 py.test 测试?

    我有一个测试套件需要与多个后端一起运行 但这不是一个简单的参数化测试 因为它适用于整个套件 多个文件 模块 我可以通过环境控制运行 但我想知道 py test 是否有更清晰的方式来表达这一点 也就是说 我正在寻找这样的东西 py test
  • 如何将 hasOne 关系与嵌入的always关系建立起来

    EmberJS 在早期版本中删除了 hasOne 在我想要 hasOne 的地方创建这样的嵌套对象关系的方法是什么 已经删除了 hasOne 以支持 ownTo 任何人都可以分享一下如何在嵌套 JSON 之间编写 embedded alwa
  • 如何将 C++ 静态库链接到 C 程序?

    我有以下 C 程序 Client h ifndef Client Client h define Client Client h include Client h class Client public void f1 void f2 en
  • Vim 中切换回上一个窗口的快捷方式?

    Ctrlw1w switches to the first window 如果目前我经常在几个窗口中的两个中进行编辑 那么切换回最后一个活动窗口的快捷方式将是完美的 有这样的捷径吗 你试过了吗
  • javascript 动态 HTML 表格行导致问题

    我有一个select option在选择其中我创建一个 HTML 表 因为我根据所选选项从后端调用数据 所以创建的表行是动态的 我正在做的是 在更改选择选项时 我正在创建 HTML 表格行 这些行是动态的并且由输入字段组成 ItemName
  • “mod”Haskell 上的语法错误[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在关注 haskell 教程 http www seas upenn edu cis194 lectures 01 intro
  • Autohotkey 脚本使用命令行参数运行程序

    我正在使用自动热键来自动化一些手动过程 我必须运行一个接受几个命令行参数的java命令行程序 java 我想在自动化中执行一些预定义的任务后从 autohotkey 运行这个 java 程序 我该怎么做 我认为这就是您正在寻找的 在此示例中
  • OAuth2 与 Spring Security - InsufficientAuthenticationException

    我目前正在开发一个涉及 Spring Security 针对 OAuth2 的项目 我们正在使用授权码流程 但是 当客户端点击 AuthorizationEndpoint oauth authorize 时 我们得到一个 Insuffici