问题标签 [jgss]
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.
java - Java 6 中对本机 GSS-API 的 Windows 支持
来自http://java.sun.com/developer/technicalArticles/J2SE/security/#3:
注意:当应用程序在尚不支持此功能的操作系统(例如 MS Windows)上运行时,将忽略这两个系统属性。
该文件是 2006 年的,所以事情可能已经改变,但我还没有找到明确的答案。
我想知道最新版本的适用于 Windows 的 Sun Java 6 今天是否支持本机 GSS(在不修改注册表的情况下获得 TGT)。
java - 在java中获取登录用户的可靠且独立于平台的方法
我们需要一个 java 应用程序在两者上运行,solaris
并且windows machines
它们是kerberized
. 我们通过指定存储在 中的凭证缓存的位置JGSS
来获取与登录用户对应的原则。由于 windows 不会像这样将详细信息存储在文件中,并且由于我们不想用来获取,因此是否有一种通用的方法可以 从 我看到很多参考资料都提到并获取这些细节。Solaris
KRB5CCNAME
solaris
NTSystem
logged-in user's name
java program
JSSE
SSPI
有人可以帮忙吗?
android - 如何处理来自常见 jdk 的缺失 API。(需要 org.ietf.jgss)
我的库依赖于 org.ietf.jgss 包,该包不包含在 android.jar 中。
我为 javax.naming 包添加了 jndi.jar(在 android 中也错过了),但找不到 org.ietf.jgss 的 jar。
我按照http://code.google.com/p/dalvik/wiki/JavaxPackages的说明从 rt.jar(JDK1.5) 重新打包了 jar 。
但是重新打包的 jar 文件很大(14mb),我不确定这是处理丢失 API 的唯一方法。
常见的 JDK 遗漏了许多软件包。是否有任何文档描述如何处理每个缺失的 API。
任何帮助,将不胜感激。
非常感谢。
active-directory - Kerberos 凭证委派
我正在尝试在 Active Directory 客户端和服务上使用 GSS API 的示例凭据委派程序。在使用context.requestCredDeleg(true)
时,当我检查时context.getCredDelegState()
,它会在上下文建立之前在客户端返回 true。但是在上下文建立之后,当我检查中间服务器端的凭证委托状态时,它返回 false。
我为用户设置了“信任此用户以委托任何服务(仅限 Kerberos)”。此外,在 Active Directory 管理中心用户属性中未选中“帐户敏感且无法委派”字段。服务用户属性也同样如此。我在属于 kerberos 域的同一台计算机上同时运行客户端和服务器,对于该计算机属性,Active Directory 管理中心也允许委派。
我使用以下作为参考:客户端-服务器程序源:http ://docs.oracle.com/javase/1.4.2/docs/guide/security/jgss/tutorials/BasicClientServer.html
凭证委托文档:http ://docs.oracle.com/javase/1.4.2/docs/guide/security/jgss/tutorials/MoreToDo.html#DelCr
示例客户端-服务器工作正常,只是我无法进行凭据委派。
tomcat - Tomcat 无法使用 spnego 进行身份验证,“无法找到默认领域”
我正在使用http://spnego.sourceforge.net/spnego_tomcat.html教程来尝试配置 Tomcat 以使用 spnego。
Hello_KDC.java 工作,我能够进行身份验证。如果我使用错误的密码,我会得到错误异常,所以它正在工作。
但是当我尝试将该教程用于 Tomcat 时,它会中断。Tomcat ROOT/index.jsp 变为空白,并且在监视时我看到它返回 404。 log\host-manager.2013-02-22.log 具有以下内容:
这发生在 tomcat 启动期间,在从浏览器加载任何页面之前。当我尝试加载页面时,没有添加任何日志。
在 krb5.conf 中,我尝试了主机名和 IP 并得到相同的错误。krb5.conf 和 login.conf 正在被定位,因为如果我删除它们,我会得到这个日志:
知道会发生什么吗?
kerberos - 在 JGSS 中建立上下文期间禁用重放缓存
我想在 Kerberos ( JGSS ) 中建立上下文期间禁用重播缓存以避免Request is a replay (34)
异常。JGSS 提供了在发起端调用的方法 requestReplayDet() 但这仅用于检测在上下文建立之后传递的令牌的重放(而不是在上下文建立期间)。
在 CGSS 中,我们有环境变量 KRB5RCACHENAME 可以设置为 none,但在 Java GSS 中它不起作用。
(编辑)Java 8 中添加的支持:https : //docs.oracle.com/javase/8/docs/technotes/guides/security/enhancements-8.html -> "-Dsun.security.krb5.rcache=none"
kerberos - 在 Kerberos JGSS 中使用多个密钥表而不使用 JAAS .conf 文件
我想在多个服务器线程中使用多个 keytab。我不想使用 JAAS conf 文件,所以我在 LoginConfiguration 类中实现了我自己的登录配置。KerberosLogin 类中的 getGSSCredentials() 函数用于通过将 keytab 位置作为参数来获取凭据。
KerberosLogin -> http://ideone.com/vaip3H LoginConfiguration -> http://ideone.com/jDqlN0
当我只运行两个服务器线程时,第一个能够从其密钥表中获取凭据(两个服务器线程使用不同的服务主体),而第二个失败。在 LoginConfiguration 中使用以某种方式parms.put("refreshKrb5Config","true");
解决了这个问题。
我无法理解为什么在不刷新配置的情况下它不能工作,并且对于将有多个这样的服务器线程的情况,它是否可以安全使用。有没有更好的方法来使用多个 keytab?
kerberos - 如何在 win7 上通过 Java Gss-api 获取 Kerberos 凭据
我想编写一个简单的程序,通过调用 gss-api 来实现客户端和服务器之间的安全通信。我尝试这样:
但是我在创建 GSSCredential 时遇到了 GSSException。
有人知道原因吗?
java - Java-6 到 Java-7 Kerberos - 现在破坏行为更改 sessionKey AP-REQ.Authenticator.subkey
我正在开发一个项目,我们将 JAAS/Krb5LoginModule 与useTicketCache和doNotPrompt以及allowtgtsessionkey注册表更改一起使用,以在加入域的计算机的 Windows 登录上搭载我们的身份验证。
然后,我们使用 jgss /kerberos获取GSS API Kerberos 令牌 (rfc1964) ,在与服务通信时,我们使用WSS Kerberos 令牌配置文件 1.1.1来保护 SOAP 消息。这包括在 SOAP Envelope/Header 的 Security 元素中包含 b64 编码的 GSS 令牌,并使用客户端/服务 sessionKey 对元素的组件进行签名。
我们通过查询 JAAS/Krb5LoginModule 返回的 javax.security.auth.Subject 的私有凭据并查找与我们的服务对等名称匹配的 javax.security.auth.kerberos.KerberosTicket 并调用其 getSessionKey 来获取客户端/会话密钥()。
所有这些在 Java-6 中都可以正常工作,但是 Java-7 客户端失败了,因为 Java-7 创建的 Kerberos KRB_AP_REQ 消息似乎发生了变化。Java-7 KRB_AP_REQ Authenticator 包含一个与sessionKey不同的子密钥。由于 Kerberos 规范(请参阅下面的摘录)说此子密钥取代了 sessionKey,因此我们使用 sessionKey 进行签名的 Java-6 行为不再正确。
RFC1510 - Kerberos 网络身份验证服务 (V5)
5.3.2. 身份验证器
我没有看到任何记录此更改的地方,但至少在 Java(TM) SE 运行时环境(内部版本 1.7.0_11-b21)中确认了该行为。
在这一点上,除非我错过了一些明显的东西(我希望我有),我们的选择似乎是:
更改 Java-7 Kerberos 配置以恢复到 Java-6 行为 - 不幸的是,我在文档中没有看到任何似乎表明这是可能的内容。
找到访问子项的方法。对于我探索的这个选项是
一个。解码 b64 编码的 GSS Token,取出加密的 Authenticator,使用 sessionKey 解密,解码 ASN.1 DER 编码并取出子密钥。
湾。使用看似非标准的GSS API 扩展,并使用带有 KRB5_GET_SESSION_KEY的ExtendedGSSContext.inquireSecContext()方法来获取子密钥。
对这些或其他可能的选项有任何建议/见解吗?