Tag: kerberos

使用Kerberos身份validation从Java应用程序访问SharePoint网站

我试图从Java应用程序访问SharePoint网站。 SharePoint服务器更喜欢Kerberos身份validation。 能否请您提供仅实施Kerberos身份validation的示例?

Java编写的嵌入式Kerberos服务器,用于测试

是否有人知道任何可嵌入的Kerberos服务器(KDC / KAdmin),它们是用Java编写的,可以在JVM进程中运行(类似于Hadoop minicluster或嵌入式LDAP服务器)? 我的目标是让人们运行需要Kerberos身份validation的集成测试,而无需安装本地kerberos服务器/配置远程服务器并连接到它。

GSSexception:不支持/启用具有HMAC SHA1-96的加密类型AES256CTS模式

将我们的域用户设置为支持Kerberos令牌(Windows Server 2008R2)的AES加密后,在Web应用程序服务器端,我们会收到以下exception: GSSException:GSS-API级别未指定失败(机制级别:不支持/启用HMAC SHA1-96的加密类型AES256CTS模式) 奇怪的是,我们有Java 6(1.6.0_27),这意味着应该支持AES,根据这个文档: http ://docs.oracle.com/javase/6/docs/technotes/guides/security/jgss/jgss- 的features.html 我们的网络应用程序或Java或第三方缺少什么想法? 我们正在使用Spring安全Kerberos扩展(使用最少的代码修改来适应我们当前的Spring 2.x版本和其他身份validation要求)。

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)。

使用HTTP客户端的Kerberos连接

我正在使用Kerberos身份validation编写HTTP连接。 我有“HTTP / 1.1 401 Unauthorized”。 你能告诉我应该检查什么吗? 我认为有一些想法,但我没有看到它。 可能我应该用“Negotiate”设置标题“WWW-Authenticate”? 非常感谢您提供任何帮助和想法。 public class ClientKerberosAuthentication { public static void main(String[] args) throws Exception { System.setProperty(“java.security.auth.login.config”, “login.conf”); System.setProperty(“java.security.krb5.conf”, “krb5.conf”); System.setProperty(“sun.security.krb5.debug”, “true”); System.setProperty(“javax.security.auth.useSubjectCredsOnly”,”false”); DefaultHttpClient httpclient = new DefaultHttpClient(); try { NegotiateSchemeFactory nsf = new NegotiateSchemeFactory(); httpclient.getAuthSchemes().register(AuthPolicy.SPNEGO, nsf); List authpref = new ArrayList(); authpref.add(AuthPolicy.BASIC); authpref.add(AuthPolicy.SPNEGO); httpclient.getParams().setParameter(AuthPNames.PROXY_AUTH_PREF, authpref); httpclient.getCredentialsProvider().setCredentials( new AuthScope(null, […]

Java和Kerberos身份validationkrb5.conf与System.setProperty的对比

请帮我解决kerberos + Java问题。 我有一个简单的Java程序,可以使用Kerberos对Windows Active Directory进行身份validation。 以下java代码工作正常,没有任何问题,并打印为true- public class KerberosAuthenticator { public static void main(String[] args) { String jaasConfigFilePath = “/myDir/jaas.conf”; System.setProperty(“java.security.auth.login.config”, jaasConfigFilePath); System.setProperty(“java.security.krb5.realm”, “ENG.TEST.COM”); System.setProperty(“java.security.krb5.kdc”,”winsvr2003r2.eng.test.com”); boolean success = auth.KerberosAuthenticator.authenticate(“testprincipal”, “testpass”); System.out.println(success); } } 当我指定krb5.conf文件的路径而不是手动指定领域和kdc时,它会错误地说“Null领域名称(601) – 未指定默认领域”。 以下是代码 – public class KerberosAuthenticator { public static void main(String[] args) { String jaasConfigFilePath = “/myDir/jaas.conf”; System.setProperty(“java.security.auth.login.config”, jaasConfigFilePath); […]

使用Spnego解密kerberos票

我正在使用spnego( http://spnego.sourceforge.net )在JBoss下进行kerberos身份validation。 我需要解密kerberos票证才能访问包含PAC数据的授权数据。 需要PAC数据来决定将哪些角色授予用户。 如何访问和解密kerberos票? 我搜索网上的例子,但没有努力。

用户解锁后,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的连接不一样? 谢谢。

Kafka Java Producer与kerberos

在kerberosed环境中向kafka主题发送消息时收到错误。 我们在hdp 2.3上有集群 我跟着这个http://henning.kropponline.de/2016/02/21/secure-kafka-java-producer-with-kerberos/ 但是对于发送消息,我必须首先明确地执行kinit,然后才能将消息发送到kafka主题。 我试图通过java类编织,但这也行不通。 PFB代码: package com.ct.test.kafka; import java.util.Date; import java.util.Properties; import java.util.Random; import kafka.javaapi.producer.Producer; import kafka.producer.KeyedMessage; import kafka.producer.ProducerConfig; public class TestProducer { public static void main(String[] args) { String principalName = “ctadmin”; String keyTabPath = “/etc/security/keytabs/ctadmin.keytab”; boolean authStatus = CTSecurityUtil.loginUserFromKeytab(principalName, keyTabPath); if (!authStatus) { System.out.println(“Authntication fails, try something else ” + authStatus); […]

使用Java和Kerberos Keytab从Windows访问Cloudera上的HDFS

我正在尝试连接到在Cloudera上运行的HDFS实例。 我的第一步是启用Kerberos并创建Keytabs(如此处所示)。 在下一步中,我想使用keytab进行身份validation。 Configuration conf = new Configuration(); conf.set(“fs.defaultFS”, “hdfs://cloudera:8020”); conf.set(“hadoop.security.authentication”, “kerberos”); UserGroupInformation.setConfiguration(conf); UserGroupInformation.loginUserFromKeytab(“hdfs@CLOUDERA”, “/etc/hadoop/conf/hdfs.keytab”); FileSystem fs = FileSystem.get(conf); FileStatus[] fsStatus = fs.listStatus(new Path(“/”)); for (int i = 0; i < fsStatus.length; i++) { System.out.println(fsStatus[i].getPath().toString()); } 它失败并出现以下错误 java.io.IOException:来自keytab /etc/hadoop/conf/hdfs.keytab的hdfs @ CLOUDERA登录失败:javax.security.auth.login.LoginException:无法从用户获取密码 问题是:如何正确处理密钥表? 我必须将其复制到我的本地机器吗?