Tag: jgss

Java 6中对Windows原生GSS-API的Windows支持

来自http://java.sun.com/developer/technicalArticles/J2SE/security/#3 : 注意:当应用程序在尚不支持此function的操作系统上运行时,将忽略这两个系统属性,例如MS Windows。 那份文件是从2006年开始的,所以事情本来可以改变,但我还没有找到明确的答案。 我想知道最新版本的Sun Java 6 for Windows今天是否支持原生GSS (在没有修改注册表的情况下获取TGT)。

用户解锁后,Windows机器上的Kerberos缓存票证无法重新生成

我有一个java服务器和客户端应用程序。 这些应用程序正在使用Windows机器。 客户端使用kerberos身份validation登录服务器。 它是使用jgssapi实现的。 首先,客户端从系统检索存储的缓存tgt票证以从kdc生成令牌。 问题是 – 在Windows中锁定用户会话(锁定屏幕或更改用户)后,系统中没有缓存的tgt票证(由C:\ Windows \ System32 \ klist.exe检查)。 据我所知,我可以通过注销/登录计算机上的用户来获取它们。 在客户机器上发生了这个问题。 锁定后,会有空的缓存票据列表。 它没有在我的办公室复制(客户端使用Windows 7,win server 2008上的活动目录服务器)。 锁定后,我总是在机器上有新的REGENERATED缓存tgt票证(在锁定之前不是从工作开始,但是在解锁后它们再次生成)。 没有为此行为设置特殊GPO(有关使用先前用户会话使用缓存票证的问题,使用Windows锁定屏幕后删除Kerboros缓存票证 )。 所以我不明白为什么系统在解锁后不重新生成缓存的tgt? 怎么做? 我在这里找到了类似的问题https://social.technet.microsoft.com/Forums/ie/en-US/be5ebc3b-d915-4acb-a9ae-67c61ee03b97/service-tickets-kerberos-purged-on-ctrlaltdel?forum= winserverDS&prof = required其中一个答案是“首先看看你对klist有什么,然后锁定并解锁你的屏幕。如果你有一个连接到DC的你将获得一张服务票给你的本地主机和KDC和TGT,如果你没有连接,你将什么都没有。“ 与AD的连接成功。 我可以ping它。 我可以使用AD-explorer获取信息。 或者与DC的连接不一样? 谢谢。

Kerberos错误:GSSHeader找不到正确的标记

我正在尝试将Kerberos身份validation连接到SOAP服务wsdl url。 我能够成功建立连接并进行服务呼叫。 启动服务器后,我能够至少进行一次成功的服务呼叫。 但是在几次请求(1次或更多次)之后,我突然收到无效的令牌错误。 一旦我收到错误,未来的调用就不起作用,错误仍然存​​在。 如果我重新启动服务器,那么服务调用至少会工作一次。 以上循环继续。 我无法弄清楚为什么突然令牌失效,尽管它早先工作。 并且重新启动服务器使令牌再次有效 。 这是错误堆栈跟踪: Caused by: GSSException: Defective token detected (Mechanism level: GSSHeader did not find the right tag) at sun.security.jgss.GSSHeader.(GSSHeader.java:97) at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:237) at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:179)

具有null SrcName的GSSContext

我正在使用基于Windows域登录的SSO进行Web应用程序,为此我选择validationKerberos票证。 但是现在我遇到了一个我无法找到解决方案的问题。 我设法validation没有exception的票证,但是当我试图获取userName时,抛出NullPointerException ,因为用户名为null ,我不知道问题出在哪里。 如果在validation期间没有出现任何exception,为什么用户名为null? 我如何得到userName: String clientName = gssContext.getSrcName().toString(); 我基于此创建了我的客户端: 使用GSSManagervalidationKerberos票证 如何通过GSS-API获取kerberos服务票? http://docs.oracle.com/javase/7/docs/technotes/guides/security/jgss/single-signon.html 更新1: 我如何设置内容,只需复制粘贴表格https://stackoverflow.com/a/25450862/1646082 : final Oid spnegoOid = new Oid(“1.3.6.1.5.5.2”); GSSManager gssmgr = GSSManager.getInstance(); // tell the GSSManager the Kerberos name of the service GSSName serviceName = gssmgr.createName(this.servicePrincipal, GSSName.NT_USER_NAME); // get the service’s credentials. note that this run() method was called […]