问题标签 [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.
web-services - 是否可以使用 Spring Security – Kerberos Extension 对受 Kerberos 保护的服务进行肥皂调用?
是否可以使用 Spring Security – Kerberos Extension 对受 Kerberos 保护的服务进行肥皂调用?我们有 Spring-ws 的 Wss4jSecurityInterceptor ,但是如果肥皂客户端想要发送 kerberos 令牌,我们没有任何 kerberosSecurityInterceptor 吗?有没有办法使用 Spring Security – Kerberos 扩展来做到这一点?请指教?
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没有找到正确的标签)
我希望这是足够的信息,有人会帮助我。
提前致谢。
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?
任何建议将不胜感激!
非常感谢!
single-sign-on - 使用 vintella 进行 SSO,未为此请求执行 vsj 身份验证
当 vintella 尝试获取凭据以在 Windows 中使用当前登录的用户时,我在堆栈跟踪中得到未针对此请求执行 vsj 身份验证。使用谷歌已被证明毫无价值,因为似乎从来没有人得到过这个错误。当 tomcat 启动时,它确实从 SPN 获得票证,只有当应用程序尝试在 SPNEGO 之后进行身份验证时。还有人看到这个吗?我想我可能不得不直接去找 SSO 供应商,我只是没有任何级别的支持。
tomcat - Spnego 跨域配置
我已经成功地在单个 Active Directory 域上配置了具有集成 ( Spnego/KerberosDOMAINA
) 身份验证的 Tomcat ,.
但是,我的公司决定一分为DOMAINA
二:
DOMAINA
与用户DOMAINB
使用提供它们的服务和服务器
域是受信任的。现在我必须配置 Tomcat(和 Spnego),它现在正在运行DOMAINB
以验证所有DOMAINA
用户。
一些问题:
- preauth 用户应该是 a
DOMAINA
orDOMAINB
用户? - 我是否需要一个新的本地
DOMAINB
preauth 用户,或者我可以将用户名参数配置为DOMAINA\OLDPREAUTHUSER
? - SPN应该如何调整?有
DOMAINA\OLDPREAUTHUSER
或有我现在定义DOMAINB\NEWPREAUTHUSER
(省略冗余DOMAINB\
前缀)? 我也改变了
krb5.conf
:[libdefaults]
[领域]
}
}
[domain_realm]
/li>
这是对的吗?默认域应该是什么?
抱歉,编辑器不会很好地格式化代码......
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 的,并且有效。
亚伦
active-directory - 在没有用户密码的情况下生成 AD Kerberos 票证
我正在开发一个需要代表用户生成 Kerberos 票证的 Java EE 服务器应用程序。
我正在开发的应用程序将使用备用凭据(非 Active Directory,例如生物识别)对用户进行身份验证,然后需要以某种方式生成一个 Kerberos 票证,显示用户已通过身份验证。然后,我将使用 Kerberos 票证生成一个 SPNEGO 令牌,并将该令牌插入到 HTTP 标头中,这样用户就不必在来自浏览器的后续请求中重新进行身份验证。
是否可以在没有用户原始 AD 密码的情况下代表用户生成 Kerberos 票证?(假设我可以访问 AD 服务帐户登录名和密码)。如果有可能,我将如何去做?需要什么样的配置、权限?
java - SSO 身份验证,响应始终为 NTLM
我正在尝试在我们正在开发的 Intranet 应用程序上实现 SSO。我为此使用SPNEGO 。现在我在配置 SSO 时遇到了一些麻烦,希望这里有人能够帮助我。
设置是这样的:
- 带有 tomcat 的 Linux 服务器为 Intranet 应用程序提供服务
- Windows Server 2008 作为域控制器 (Active Directory)
- 带有 IE9 和 Firefox 的 Windows 7 客户端
当我打开 Intranet 应用程序时,我看到一个从客户端到 tomcat 服务器的 GET 请求。tomcat服务器和SpnegoFilter的第一个响应是401未授权,这是正确的,因为客户端需要进行身份验证。
然后客户端的响应是带有标志 NTLMSSP_NEGOTIATE 的 GET 请求。在这里它打破了。我不期望 NTLM 响应,而是 kerberos/spnego 响应。不知何故,我无法弄清楚如何将正确的响应发送到 tomcat 服务器。
默认情况下,SPNEGO 不支持 NTLM,因此我在日志中得到以下条目:
java.lang.UnsupportedOperationException:指定了 NTLM。降级为基本身份验证(和/或 SSL),但不支持降级。
所以我做错了,但是在摆弄配置和策略一天之后,我就是不知道它是什么。
希望得到一些回应。
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 安全开发邮件列表中再次出现。