Tag: kerberos

当由不同用户提交时,Tez作业失败

配置具有Kerberos安全性的Hadoop-2.6.0 HA群集。 在不同用户的yarn-tez框架中使用tez-example-0.6.0.jar提交示例作业时,获取以下exception 例外 java.io.IOException: The ownership on the staging directory hdfs://clustername/tmp/staging is not as expected. It is owned by Kumar. The directory must be owned by the submitter TestUser or by TestUser 该目录具有完全权限,但仍然获得上述exception。 但是当在yarn-tez框架中使用mapreduce-examples-2.6.0.jar提交作业时,作业就完成了。 命令 yarn jar C:\Tez\tez-examples-0.6.0.jar orderedwordcount -Dmapreduce.framework.name=yarn-tez /user/Kumar/names /user/Kumar/names1 非常感谢帮助。

密码的SPNEGO身份validation问题

我已将我的应用程序配置为通过SPNEGO与Websphere一起使用Kerberos身份validation。 这是细节 的krb5.conf [libdefaults] default_realm = ABC.MYCOMPANY.COM default_keytab_name = FILE:C:\IBM\WebSphere\AppServer\kerberos\MyServer.keytab default_tkt_enctypes = rc4-hmac des-cbc-md5 default_tgs_enctypes = rc4-hmac des-cbc-md5 forwardable = true renewable = true noaddresses = true clockskew = 300 [realms] ABC.MYCOMPANY.COM = { kdc = TEST.abc.mycompany.com:88 default_domain = mycompany.com } [domain_realm] .mycompany.com = ABC.MYCOMPANY.COM login.conf的 spnego-client { com.sun.security.auth.module.Krb5LoginModule required; }; spnego-server { com.sun.security.auth.module.Krb5LoginModule required […]

当客户端和服务器在同一台计算机上时,Kerberos身份validation未运行

尝试从运行jboss服务器的同一台计算机上访问应用程序时,我收到以下错误 org.springframework.security.authentication.BadCredentialsException: Kerberos validation not succesfull at org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator.validateTicket(SunJaasKerberosTicketValidator.java:69) at org.springframework.security.extensions.kerberos.KerberosServiceAuthenticationProvider.authenticate(KerberosServiceAuthenticationProvider.java:86) at org.springframework.security.authentication.ProviderManager.doAuthentication(ProviderManager.java:120) at org.springframework.security.authentication.AbstractAuthenticationManager.authenticate(AbstractAuthenticationManager.java:48) at org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter.doFilter(SpnegoAuthenticationProcessingFilter.java:131) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at […]

HttpClient检查Kerberos安全网页。 NTLM登录无效

我必须编写一个程序来检查我们公司的Kerberos安全站点。 我尝试使用HttpClient并得到以下错误: KrbException: Server not found in Kerberos database (7) at sun.security.krb5.KrbTgsRep.(KrbTgsRep.java:61) at sun.security.krb5.KrbTgsReq.getReply(KrbTgsReq.java:185) … 我在5个月前写过一个NTLM登录,但它对这个Kerberos安全站点不起作用。 我认为Nego2已激活,因此如果Kerberos失败,它不会回退到NTLM。 我阅读了Kerberos Wikipedia文章: http : //en.wikipedia.org/wiki/Kerberos_(protocol) ,我认为问题是TGS在数据库中找不到所请求的服务。 我想这是因为我在错误之前得到了一张票(我认为它是TGT)。 Found ticket for userid@EXAMPLE.COM to go to krbtgt/EXAMPLE.COM@EXAMPLE.COM expiring on Thu May 31 01:35:56 CEST 2012 所以错误发生在“客户服务授权” – > 2.(参见维基百科文章) 问题是服务必须在kerberos数据库中,因为我可以使用IE访问它(没有登录,所以单点登录工作)。 所以我的问题是:为什么TGS在Kerberos数据库中找不到服务器,但它适用于IE? 额外的信息 我试图在顶部获得必要的信息,但这里是所有信息,因为我不知道我是否得到了所有必要的信息: 操作系统是Windows 7 Firefox版本9.0.1 Chrome版本19.0.1084.52 Safari版本5.0.2 IE版本8.0.7600.16385 我的Java代码: […]

为什么JDK1.8.0u121无法找到kerberos default_tkt_enctypes类型? (KrbException:default_tkt_enctypes没有支持的默认etypes)

以下是我的环境细节: – KDC服务器 :Windows Server 2012 目标机器 :Windows 7 JDK版本 :Oracle 1.8.0_121(64位) 我在Windows 7机器上运行Java的kinit命令时遇到以下exception: – C:\Program Files\Java\jdk1.8.0_121\bin>kinit -k -t “C:\Program Files\Apache Software Foundation\Tomcat 8.0\conf\tomcat_ad.keytab” HTTP/dev26.devdevelopment.com@DEVDEVELOPMENT.COM Exception: krb_error 0 no supported default etypes for default_tkt_enctypes No error KrbException: no supported default etypes for default_tkt_enctypes at sun.security.krb5.Config.defaultEtype(Config.java:844) at sun.security.krb5.internal.crypto.EType.getDefaults(EType.java:249) at sun.security.krb5.internal.crypto.EType.getDefaults(EType.java:262) at sun.security.krb5.KrbAsReqBuilder.build(KrbAsReqBuilder.java:261) at sun.security.krb5.KrbAsReqBuilder.send(KrbAsReqBuilder.java:315) at sun.security.krb5.KrbAsReqBuilder.action(KrbAsReqBuilder.java:361) […]

使用Spnego / Kerberos进行Spring启动 – 配置问题 – 需要ServletContext来配置默认的servlet处理

让spring-security-kerberos-web与Spring Boot应用程序一起工作,我似乎已经达到了一个死胡同。 我的项目中有一个@Configuration类,如下所示 package com.co.dept.bsc.configuration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.FileSystemResource; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.kerberos.authentication.KerberosAuthenticationProvider; import org.springframework.security.kerberos.authentication.KerberosServiceAuthenticationProvider; import org.springframework.security.kerberos.authentication.sun.GlobalSunJaasKerberosConfig; import org.springframework.security.kerberos.authentication.sun.SunJaasKerberosClient; import org.springframework.security.kerberos.authentication.sun.SunJaasKerberosTicketValidator; import org.springframework.security.kerberos.web.authentication.SpnegoAuthenticationProcessingFilter; import org.springframework.security.kerberos.web.authentication.SpnegoEntryPoint; import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; import com.co.dept.bsc.service.DummyUserDetailsService; @Configuration @EnableWebSecurity public class AuthProviderConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(final HttpSecurity http) throws Exception […]

GSSException:修改了消息流(41)

我正在使用森林架构中的LDAP(所有服务器和我的服务器都是Windows)。 我使用NTLM身份validation绑定到AD。 我有一个JAVA代码,可以对LDAP服务器执行操作。 代码被包装为tomcat servlet。 直接运行JAVA代码(只是作为应用程序执行LDAP身份validation代码)时,绑定对本地域(本地域=我登录到Windows,并与此域的用户运行此进程)和外部域都有效。 当将JAVA代码作为servlet运行时,绑定工作并从一个域validation用户,但如果我尝试从其他域validation用户,则无法正常工作,它将无法工作(仅当我重新启动tomcat时它才会起作用)。 我得到一个例外: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Message stream modified (41))]] 我会提到它是相同的代码,具有相同的配置和相同的krb5文件。 编辑:更多信息: 这是我的代码: public void func(String realm, String kdc) { try { URL configURL = getClass().getResource(“jaas_ntlm_configuration.txt”); System.setProperty(“java.security.auth.login.config”, configURL.toString()); System.setProperty(“java.security.krb5.realm”, realm); System.setProperty(“java.security.krb5.kdc”,kdc); // If the application is run on NT rather than […]

身份validation:Kerberos还是SSL?

我正处于Java EE应用程序的“预设计”阶段(如果有这样的事情!),它将在客户端使用Swing框并实现Web和服务器层的组件。 我立即提出了一些技术选择,并一直在阅读Kerberos和SSL如何工作之间的差异。 我无法找到任何答案的一个领域是如何在Kerberos或SSL之间进行选择的主题。 换句话说,您如何判断何时使用任何一种协议? 假设Swing客户端不受特定传输(UDP,TCP或其他)的约束,并且可以使用/ any。 如何选择这两者中的哪一个更适合其应用? 谢谢!

适用于Secure Hbase的Java客户端

嗨,我正在尝试为安全的hbase编写一个java客户端。 我想从代码本身做kinit,因为我使用的是用户组信息类。 任何人都可以指出我在哪里错了吗? 这是我试图连接o hbase的主要方法。 我必须在CONfiguration对象中添加配置而不是使用xml,因为客户端可以位于任何位置。 请参阅以下代码: public static void main(String [] args) { try { System.setProperty(CommonConstants.KRB_REALM, ConfigUtil.getProperty(CommonConstants.HADOOP_CONF, “krb.realm”)); System.setProperty(CommonConstants.KRB_KDC, ConfigUtil.getProperty(CommonConstants.HADOOP_CONF,”krb.kdc”)); System.setProperty(CommonConstants.KRB_DEBUG, “true”); final Configuration config = HBaseConfiguration.create(); config.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION, AUTH_KRB); config.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHORIZATION, AUTHORIZATION); config.set(CommonConfigurationKeysPublic.FS_AUTOMATIC_CLOSE_KEY, AUTO_CLOSE); config.set(CommonConfigurationKeysPublic.FS_DEFAULT_NAME_KEY, defaultFS); config.set(“hbase.zookeeper.quorum”, ConfigUtil.getProperty(CommonConstants.HBASE_CONF, “hbase.host”)); config.set(“hbase.zookeeper.property.clientPort”, ConfigUtil.getProperty(CommonConstants.HBASE_CONF, “hbase.port”)); config.set(“hbase.client.retries.number”, Integer.toString(0)); config.set(“zookeeper.session.timeout”, Integer.toString(6000)); config.set(“zookeeper.recovery.retry”, Integer.toString(0)); config.set(“hbase.master”, “gauravt-namenode.pbi.global.pvt:60000”); config.set(“zookeeper.znode.parent”, “/hbase-secure”); config.set(“hbase.rpc.engine”, “org.apache.hadoop.hbase.ipc.SecureRpcEngine”); config.set(“hbase.security.authentication”, […]

如何使用Windows Java客户端保存Kerberos服务票证?

我编写了一个在Windows下运行的简单Java HTTP客户端。 客户端与需要通过SPNego进行Kerberos身份validation的Web服务器进行通信。 我遇到了两个问题: 服务票证不存储在我的凭证缓存中。 执行请求后,我希望在C:\Users\\krb5cc_下看到存储在我的凭证缓存中的Kerberos服务票证 – 假设Java将服务票据存储在凭证缓存中,我是错误的吗? 我想重新使用客户端A中获取的服务票据来处理客户端B中的请求(其中两个客户端都是同一台计算机上的Java应用程序)。 这可能与Java有关吗? 如果我在循环中运行下面的代码一百次,它只能工作n次(其中n是1到100之间的随机数)。 失败的请求返回401错误消息,因为Java无法检索服务票证(请记住:由于我的应用程序不在请求之间存储服务票证,因此它会尝试从TGT为每个请求获取新的服务票证) 。 我已将错误消息添加到此问题的底部。 我在JDK的bin文件夹中通过kinit创建了一个TGT。 以下代码段用于制作简单的GET请求: static void testJavaHttpKerberosAuthentication() throws IOException { URL obj = new URL(URI); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); int responseCode = con.getResponseCode(); System.out.println(“\nSending ‘GET’ request to URL : ” + URI); System.out.println(“Response Code : ” + responseCode); BufferedReader in = new […]