问题标签 [spnego]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
361 浏览

web-services - 是否可以使用 Spring Security – Kerberos Extension 对受 Kerberos 保护的服务进行肥皂调用?

是否可以使用 Spring Security – Kerberos Extension 对受 Kerberos 保护的服务进行肥皂调用?我们有 Spring-ws 的 Wss4jSecurityInterceptor ,但是如果肥皂客户端想要发送 kerberos 令牌,我们没有任何 kerberosSecurityInterceptor 吗?有没有办法使用 Spring Security – Kerberos 扩展来做到这一点?请指教?

0 投票
1 回答
3587 浏览

java - Spring Security Kerberos/SPNEGO 扩展错误“访问被拒绝”

我在使用 Spring Security Kerberos/SPNEGO Extension 示例时遇到了麻烦。我在用:

  • 窗口 2008
  • 雄猫 7
  • Spring Security Kerberos/SPNEGO 扩展
  • 1.7 jdk1.7.0_09

我正在使用此博客设置示例: http: //blog.springsource.com/2009/09/28/spring-security-kerberos/ 所以我开始:在 Windows 2008 服务器中,我使用命令创建了主体:

并得到了这个结果:

之后,我将 xena2.keytab 文件复制到计算机(XENA2)并测试与服务器的连接:

直到现在对我来说都很好。

向 Tomcat 启动添加变量:

在 C: 磁盘中创建文件krb5.conf :

像这样更新spnego.xml文件:

也试过:

将项目部署到 tomcat 运行它(在与服务器不同的计算机上),进入受限位置,写入用户并通过并得到 HTTP 500 错误。日志文件看起来像这样(有点清理):

所以问题是为什么我收到这个错误:org.springframework.security.access.AccessDeniedException: Access is denied

难道是keytab文件没有使用成功?如果是,那么为什么?另外我认为这个错误产生了另一个错误: 原因:GSSException:检测到有缺陷的令牌(机制级别:GSSHeader没有找到正确的标签)

我希望这是足够的信息,有人会帮助我。

提前致谢。

0 投票
1 回答
998 浏览

single-sign-on - 桌面 SSO 客户端(C/C++)的参考实现,基于 Kerberos 的身份验证(服务器端是 Java 和 MS AD)

我们需要在托管的 Windows 环境(一些 Vista 机器,一些带有 Win 2008 Citrix 后端的 Citrix 客户端)中为富客户端实施桌面 SSO。

富客户端(用 C/C++ 编写)使用 SOAP Web 服务连接到服务器。服务器是一个运行在 JBoss EAP 上的 Java 应用程序。用户数据存储在 Microsoft ActiveDirectory 中。ADFS 2.0 对我们不可用。富客户端不使用 Internet Explorer 组件。

我们计划在服务器端使用 PicketLink。然而,中心问题是:我们如何将 SSO 注入 C/C++ 客户端?我们使用哪些 API?我的理解是我们需要在客户端读取 Kerberos 令牌,但我想避免手动实现所有 Kerberos 交互。Windows API 中是否有任何抽象层?有没有第三方库?

也许有一个开源参考实现或产品展示了如何在托管 Windows 环境中实现基于 Kerberos 的富客户端 SSO?

任何建议将不胜感激!

非常感谢!

0 投票
1 回答
722 浏览

smb - 计算 SPNEGO GSS-API(NTLMSSP_AUTH) 接受完成(0) 状态的“mechListMIC”的方法

0 投票
0 回答
422 浏览

single-sign-on - 使用 vintella 进行 SSO,未为此请求执行 vsj 身份验证

当 vintella 尝试获取凭据以在 Windows 中使用当前登录的用户时,我在堆栈跟踪中得到未针对此请求执行 vsj 身份验证。使用谷歌已被证明毫无价值,因为似乎从来没有人得到过这个错误。当 tomcat 启动时,它确实从 SPN 获得票证,只有当应用程序尝试在 SPNEGO 之后进行身份验证时。还有人看到这个吗?我想我可能不得不直接去找 SSO 供应商,我只是没有任何级别的支持。

0 投票
1 回答
1346 浏览

tomcat - Spnego 跨域配置

我已经成功地在单个 Active Directory 域上配置了具有集成 ( Spnego/KerberosDOMAINA ) 身份验证的 Tomcat ,.

但是,我的公司决定一分为DOMAINA二:

  • DOMAINA与用户
  • DOMAINB使用提供它们的服务和服务器

域是受信任的。现在我必须配置 Tomcat(和 Spnego),它现在正在运行DOMAINB以验证所有DOMAINA用户。

一些问题:

  • preauth 用户应该是 a DOMAINAorDOMAINB用户?
  • 我是否需要一个新的本地DOMAINBpreauth 用户,或者我可以将用户名参数配置为DOMAINA\OLDPREAUTHUSER
  • SPN应该如何调整?有DOMAINA\OLDPREAUTHUSER或有我现在定义DOMAINB\NEWPREAUTHUSER(省略冗余DOMAINB\前缀)?
  • 我也改变了krb5.conf

    [libdefaults]

    [领域]

    }

    }

    [domain_realm]

    /li>

这是对的吗?默认域应该是什么?

抱歉,编辑器不会很好地格式化代码......

0 投票
3 回答
9475 浏览

spring-security - 从 Java6 升级到 Java7 后 Kerberos 损坏

我有一个使用 spring-security kerberos 扩展的工作应用程序,在 jboss 上运行,运行 java 6。

我正在将我的 jvm 从 java 6 升级到 java 7。当我这样做时,使用在 java 6 上工作的相同代码库和相同的 keytab,我现在在使用 java 7 时收到错误。

我一直收到:java.security.PrivilegedActionException:GSSException:在 GSS-API 级别未指定失败(机制级别:无效参数 (400) - 找不到适当类型的密钥来解密 AP REP - RC4 与 HMAC)

我尝试使用其他论坛中描述的不同 /crypto 选项重新生成密钥表,但无济于事。

我已经调试了 java 7 代码,实际上,处理启动时读取 keytab 的类从 6 更改为 7。难道我的 keytab 没有被正确读入应用程序了吗?我在使用 Java6 启动时看到的一些调试消息在 7 中不再出现,但我不知道这是设计使然,还是表明还有其他东西在起作用?有没有其他人在从 6 升级到 7 时遇到问题,并且他们的 kerberos 集成中断了?有什么建议吗?

在启动时登录 spnego 和 kerberos 调试,我的日志显示:

另一个问题 - 您会看到它正在尝试读取 C:\Windows\krb5.ini。我的服务器上没有这样的文件。我需要一个吗?我也没有一个使用 java 6 的,并且有效。

亚伦

0 投票
1 回答
3925 浏览

active-directory - 在没有用户密码的情况下生成 AD Kerberos 票证

我正在开发一个需要代表用户生成 Kerberos 票证的 Java EE 服务器应用程序。

我正在开发的应用程序将使用备用凭据(非 Active Directory,例如生物识别)对用户进行身份验证,然后需要以某种方式生成一个 Kerberos 票证,显示用户已通过身份验证。然后,我将使用 Kerberos 票证生成一个 SPNEGO 令牌,并将该令牌插入到 HTTP 标头中,这样用户就不必在来自浏览器的后续请求中重新进行身份验证。

是否可以在没有用户原始 AD 密码的情况下代表用户生成 Kerberos 票证?(假设我可以访问 AD 服务帐户登录名和密码)。如果有可能,我将如何去做?需要什么样的配置、权限?

0 投票
2 回答
7803 浏览

java - SSO 身份验证,响应始终为 NTLM

我正在尝试在我们正在开发的 Intranet 应用程序上实现 SSO。我为此使用SPNEGO 。现在我在配置 SSO 时遇到了一些麻烦,希望这里有人能够帮助我。

设置是这样的:

  1. 带有 tomcat 的 Linux 服务器为 Intranet 应用程序提供服务
  2. Windows Server 2008 作为域控制器 (Active Directory)
  3. 带有 IE9 和 Firefox 的 Windows 7 客户端

当我打开 Intranet 应用程序时,我看到一个从客户端到 tomcat 服务器的 GET 请求。tomcat服务器和SpnegoFilter的第一个响应是401未授权,这是正确的,因为客户端需要进行身份验证。

然后客户端的响应是带有标志 NTLMSSP_NEGOTIATE 的 GET 请求。在这里它打破了。我不期望 NTLM 响应,而是 kerberos/spnego 响应。不知何故,我无法弄清楚如何将正确的响应发送到 tomcat 服务器。

默认情况下,SPNEGO 不支持 NTLM,因此我在日志中得到以下条目:

java.lang.UnsupportedOperationException:指定了 NTLM。降级为基本身份验证(和/或 SSL),但不支持降级。

所以我做错了,但是在摆弄配置和策略一天之后,我就是不知道它是什么。

希望得到一些回应。

0 投票
4 回答
8277 浏览

java - 人们如何让 Java SPNEGO 客户端在 Windows 中工作?

为了在 Windows 上使用 Java 进行客户端 HTTP SPNEGO 身份验证,您需要设置 Windows 注册表项allowtgtsessionkey。这是有据可查的。我不明白的是人们如何解决这个问题?大多数公司网站永远不会接受为了单个软件而在 Windows 中更改此注册表项。如果需要在组织中的每个工作站上进行更改,还要考虑一下麻烦。但这只是理论,因为到目前为止我无法说服我们的任何客户更改此注册表项。

我不怪他们。大多数公司管理员会认为这是一种放松安全措施,因此会反对。

我读过这篇文章: Java 或命令行实用程序中是否有办法使用本机 SSPI API 获取服务的 Kerberos 票证?

但它现在已经很旧了。

所以我真的,真的不明白人们如何让 Windows + Java 客户端 + Kerberos 在大学环境、家庭用户等之外的任何地方工作。

我从企业管理员那里得到的问题是“当 IE 和 Firefox 等应用程序在不设置此键的情况下执行 SPNEGO没有问题时,为什么我们需要设置此注册表键?”。嗯,我知道答案是什么。这是因为(很可能)IE 和 Firefox 等应用程序基于 Windows 原生 GSS API (SSPI),而 Sun 的 Java 使用自己的实现。

我假设使用类似WAFFLE的东西可以解决问题,但我更喜欢纯 Java 解决方案。我还假设使用基于 Java 的解决方案(例如 Spring security 或 Apache HttpClient)将无济于事,因为它们都会遇到这个问题。

任何帮助或指示将不胜感激。

更新1

我发现在 Oracle 的错误数据库中有一个RFE。Oracle 员工也提交了一个补丁,并在 JDK 邮件列表中讨论了这个特性。除了据我所知,这在当前的 Java 7 中是不可用的,甚至不是实验性的,这并没有让我变得更聪明。正确的?

更新2

这个问题现在在 OpenJDK 安全开发邮件列表中再次出现。