Spring Security Kerberos 与基本的链接

2024-03-05

我有一个关于 Spring Security 的快速问题。

我正在寻找一种解决方案,将安全性集成到我们的应用程序中,该应用程序提供 SSO,但也提供基本的 HTTP。

我们系统的自动化部分之一只能支持基本身份验证,而我们却被困在其中。目前,我们的目标是在 SSO 解决方案中使用 Kerberos,然后还支持基本功能(对于非常有限的使用)。所有这些都将保护通过 Resteasy 运行的 RESTful Web 服务。

有人认为 Kerberos 和 BASIC 在 Spring Security 中链接在一起的解决方案有任何固有的不可能性吗?我们遇到了 WildFly 和 undertow 的问题,无法支持多种不同的身份验证方法,这些方法在握手中使用 HTTP 响应代码。

感谢您的输入


由于这个问题有点难,我想你已经熟悉了Spring Security Kerberos 示例 https://github.com/spring-projects/spring-security-kerberos/tree/master/spring-security-kerberos-samples显示如何使用表单身份验证作为后备来配置 kerberos 身份验证。 我没有证据表明它会起作用,但我认为您应该能够将您的 kerberos 身份验证与基本身份验证链接起来,没有任何问题。对此我分享一下我的想法...

想法 1:过滤器链

支持多种身份验证方法的技巧是正确设置身份验证过滤器的顺序。 如果顺序错误,客户端可能会挂起基本身份验证,并且可能永远无法到达 kerberos 身份验证过滤器,因为会弹出浏览器的基本身份验证对话框。这可能有点取决于基本身份验证提供程序和过滤器在 Spring 中的实现方式。无论如何,如果顺序正确,kerberos 过滤器(基本身份验证过滤器)之后的链中的下一个过滤器将开始工作。

想法 2:Kerberos 身份验证不应破坏基本身份验证

浏览器应将与 kerberos 服务提供者的通信与与基本身份验证提供者的通信区别对待,因为协议不同。 SAML 通信运行在它有自己的命名空间 http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-kerberos-browser-sso.html,因此在我看来,它不应该影响基于 HTTP 标头中的授权元素的基本身份验证通信。

EDIT: 即使有关命名空间的假设在浏览器行为中没有发挥任何作用,步骤 6 中的顺序图 http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-kerberos-browser-sso.html将是一个关键点。当过滤器链接正确时,Spring 应该返回 401 响应,例如 401 - Access denied - WWW-authenticate - Basic realm = "your domain" 这将迫使您的浏览器进入基本身份验证。

想法 3:Spring Security Kerberos 中的 Spnego 协商

The Spnego配置 http://docs.spring.io/spring-security-kerberos/docs/1.0.0.RELEASE/reference/htmlsingle/#ssk-spnegoSpring Security Kerberos 文档中的内容实际上是基于这些想法构建的。这也可以在示例中看到,即第 49 行和第 50 行这个WebSecurityConfig.java https://github.com/spring-projects/spring-security-kerberos/blob/master/spring-security-kerberos-samples/sec-server-spnego-form-auth/src/main/java/demo/app/WebSecurityConfig.java

如果您遇到麻烦,我会感到惊讶。

最后一个想法

如果没有要求强制您进行基本身份验证,我建议不要使用它。最好继续使用基于令牌的身份验证。即使我不完全同意该博客的所有细节,它也解释了为什么不应使用基本身份验证 http://adrianotto.com/2013/02/why-http-basic-auth-is-bad/,如果你能避免的话。

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

Spring Security Kerberos 与基本的链接 的相关文章

随机推荐

  • php 中转换为 md5 是错误的

    我有一个表格 其中我从用户那里获取用户名和密码 我正在将密码转换为 md5 然后我将其插入数据库 在用户登录表单中 我获取密码并将其转换为 md5 然后我比较两个密码 它在某些条件下匹配 但如果密码 则失败p w0rd 有什么问题吗 这个问
  • 在 Windows CMD 上递归删除文件或文件夹

    如何从命令行在 Windows 上递归删除文件或文件夹 我找到了这个解决方案 我们在命令行上驱动路径并运行此命令 我给出了一个带有 svn 文件扩展名文件夹的示例 for r R in svn do if exist R rd s q R
  • 安卓短信API

    我知道 SMS 内容提供商不是公共 API 的一部分 至少没有记录 但如果我理解正确 只要您知道如何使用 API 仍然可以使用许多 SMS 功能 例如 将短信插入收件箱非常简单 ContentValues values new Conten
  • 如何使用 jQuery 获取具有相同 z-index 的元素?

    现在 我有不同的元素z index 我想使用 jQuery 将它们分组 div class float div div class float div div class float div 我可以用 attr style 得到z inde
  • 确定我正在使用的实体框架版本?

    我相信有两个版本1和2 版本 2 被称为实体框架 4 0 我如何知道应用程序中正在使用哪个版本 这是在我的 web config 中 这是否意味着我正在使用版本 2
  • TwinCAT 3.0 自动化接口无需 Visual Studio?

    我需要从 C 应用程序启动 关闭 TwinCAT 3 0 正如善意回答的如何从控制台 C 程序启动 关闭TwinCAT系统 https stackoverflow com questions 54077462 how to startup
  • 在 iOS 中将 CSV 上传(转换为电子表格)到 Google Drive?

    我已经生成 csv 文件来存储在本地目录路径中 我尝试将 csv 文件上传到谷歌驱动器 它工作正常 从 Google 云端硬盘打开 csv 文件 但电子表格中未显示预览 所以我想上传 csv 文件 将 csv 转换为电子表格 到谷歌驱动器
  • 扩展 EF DBContext

    我不确定我所问的是否是正确的方法 我有一个数据库优先模型 我想向其中添加某些常用方法 例如更新特定表的特定字段 我知道我可以通过使用适当的方法创建一个类来做到这一点 例如 public static class MyClass public
  • Eclipse 传入同步视图将传入的新文件显示为文件夹

    我希望可以在这里询问 Eclipse 中的奇怪行为 错误 当我将 Eclipse 同步视图与 Subclipse 结合使用时 我可以通过指向左侧的蓝色箭头很好地查看来自其他开发人员的所有传入文件 双击非常适合打开比较编辑器并查看所有更改 一
  • 如何在 C# 中将包含 HTML 的字符串渲染为图像?

    我正在开发一个为用户提供交互式反馈工具的网络应用程序 在此应用程序中 用户可以单击发送反馈按钮 该按钮会在当前网页上覆盖一个覆盖层 并允许他们拖动突出显示区域DIVs 强调某些领域 一旦他们提交反馈 整个页面的 HTML 就会通过 AJAX
  • 当生成正态分布的随机值时,定义范围的最有效方法是什么?

    仅供参考 随机 伪随机 A 当生成均匀随机数时 我可以指定一个范围 即 Math random Math random 10 5 generates numbers between 5 and 15 B 生成一组具有高斯式正态随机性版本的随
  • 从多个 CSV 文件中解析特定列/数据

    所以 最近我一直在使用 D3 js 解析 CSV 文件中的数据 在阅读 Scott Murray 的 交互式数据可视化 一本很棒的书 内容非常丰富 时 它解释了如何从 CSV 中的表中选择所有数据 解析CSV的代码如下所示 d3 text
  • 如何在 JavaScript 中访问 Grails 变量?

    我的 Grails 应用程序中有一个变量BootStrap groovy class BootStrap def init servletContext gt def testGrails 11 我想展示一个 JavaScriptalert
  • 使用 Maven 在 gitlab 中运行 (Docker) 测试容器

    我正在 gitlab ci cd 管道中工作 该管道使用 maven 和 docker 执行其所有命令 不包括部署 在本例中 我尝试运行集成测试 由 Maven 启动 它使用测试容器 用于 mysql 数据库 这些测试在本地运行时工作正常
  • 如何在 Vue 模板中的数组中使数据响应

  • 如何从 Java Web 应用程序将用户发推文到他/她的 Twitter 帐户

    你好 我想构建一个 java web 应用程序 我希望用户从我的 java 应用程序在他的帐户上发推文 现在 当我们考虑 twitter4J 时 它显示的代码正在使用我们自己在 twitter 开发门户上注册的应用程序 它不要求客户提供凭据
  • 使用命名导入在 Je​​st 测试中导入“常量”

    我有一个config and constants我的项目中的文件夹 位于src config test ts src constants index js分别 我已经设置了 Jest 来使用moduleNameMapper如下所示 这样我就
  • React 测试库不更新状态

    我的组件 import React from react const TestAsync gt const counter setCounter React useState 0 const delayCount gt setTimeout
  • 多个轴的单个图例[重复]

    这个问题在这里已经有答案了 我有以下示例代码 fig1 suptitle Test ax1 fig1 add subplot 221 ax1 plot x y1 color b label aVal ax2 ax1 twinx ax2 pl
  • Spring Security Kerberos 与基本的链接

    我有一个关于 Spring Security 的快速问题 我正在寻找一种解决方案 将安全性集成到我们的应用程序中 该应用程序提供 SSO 但也提供基本的 HTTP 我们系统的自动化部分之一只能支持基本身份验证 而我们却被困在其中 目前 我们