2012-03-02 13 views
5

मैं जावा 6 से जावा 7 में माइग्रेट कर रहा हूं और केर्बेरो प्रमाणीकरण के साथ एक समस्या में चल रहा हूं। मुझे लगता है कि अंतर्निहित एन्क्रिप्शन प्रकार ऑर्डर स्विच किया गया है और नतीजतन एक अलग एन्क्रिप्शन प्रकार का उपयोग किया जाता है। इस मामले में Aes128CtsHmacSha1EType का उपयोग लेनदेन के हिस्से के लिए किया जा रहा है जब जावा 7 चलाया जाता है। ArcFourHmacEType का उपयोग तब किया जाता है जब जावा 6 चलाया जाता है और जावा 7 के दूसरे भाग के लिए चलाया जाता है।जावा 7 केर्बेरोज समस्या - एईएस 128 भ्रष्ट चेकसम

अन्य विवरण: Windows सक्रिय निर्देशिका सर्वर के विरुद्ध Linux (Fedora 16) पर चल रहा है।

मुझे पता है कि मैं काम करने के लिए प्रमाणीकरण प्राप्त कर सकता हूं यदि मैं डिफ़ॉल्ट_tkt_enctypes, default_tgs_enctypes, allow_enctypes पैरामीटर krb5.conf फ़ाइल में सेट करता हूं; हालांकि, मैं इसे बिना किसी फ़ाइल के काम करने के लिए और आदर्श रूप से एक या दो enctypes को मजबूर किए बिना काम करना चाहता हूं।

java.security.PrivilegedActionException: javax.naming.AuthenticationException: GSSAPI [Root exception is javax.security.sasl.SaslException: Final handshake failed [Caused by GSSException: Token had invalid integrity check (Mechanism level: Corrupt checksum in Wrap token)]] 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:415) 
at *internal.code*.LDAPAuthenticator.authenticate(LDAPAuthenticator.java:46) 
at *internal.code*.LDAPAuthenticatorTest.testUpdateUser(LDAPAuthenticatorTest.java:30) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at junit.framework.TestCase.runTest(TestCase.java:154) 
at junit.framework.TestCase.runBare(TestCase.java:127) 
at junit.framework.TestResult$1.protect(TestResult.java:106) 
at junit.framework.TestResult.runProtected(TestResult.java:124) 
at junit.framework.TestResult.run(TestResult.java:109) 
at junit.framework.TestCase.run(TestCase.java:118) 
at junit.framework.TestSuite.runTest(TestSuite.java:208) 
at junit.framework.TestSuite.run(TestSuite.java:203) 
at junit.textui.TestRunner.doRun(TestRunner.java:116) 
at com.intellij.junit3.JUnit3IdeaTestRunner.doRun(JUnit3IdeaTestRunner.java:139) 
at junit.textui.TestRunner.doRun(TestRunner.java:109) 
at com.intellij.junit3.JUnit3IdeaTestRunner.startRunnerWithArgs(JUnit3IdeaTestRunner.java:52) 
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:182) 
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
Caused by: javax.naming.AuthenticationException: GSSAPI [Root exception is javax.security.sasl.SaslException: Final handshake failed [Caused by GSSException: Token had invalid integrity check (Mechanism level: Corrupt checksum in Wrap token)]] 
at com.sun.jndi.ldap.sasl.LdapSasl.saslBind(LdapSasl.java:168) 
at com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:232) 
at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2740) 
at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:316) 
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:193) 
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:211) 
at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:154) 
at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:84) 
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684) 
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307) 
at javax.naming.InitialContext.init(InitialContext.java:242) 
at javax.naming.InitialContext.<init>(InitialContext.java:216) 
at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:101) 
at *internal.code*.LDAPAuthenticator.getAttributeFor(LDAPAuthenticator.java:156) 
at *internal.code*.user.LDAPAuthenticator.access$000(LDAPAuthenticator.java:27) 
at *internal.code*.user.LDAPAuthenticator$1.run(LDAPAuthenticator.java:49) 
... 27 more 
Caused by: javax.security.sasl.SaslException: Final handshake failed [Caused by GSSException: Token had invalid integrity check (Mechanism level: Corrupt checksum in Wrap token)] 
at com.sun.security.sasl.gsskerb.GssKrb5Client.doFinalHandshake(GssKrb5Client.java:328) 
at com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:187) 
at com.sun.jndi.ldap.sasl.LdapSasl.saslBind(LdapSasl.java:132) 
... 42 more 
Caused by: GSSException: Token had invalid integrity check (Mechanism level: Corrupt checksum in Wrap token) 
at sun.security.jgss.krb5.WrapToken_v2.getData(WrapToken_v2.java:151) 
at sun.security.jgss.krb5.WrapToken_v2.getData(WrapToken_v2.java:105) 
at sun.security.jgss.krb5.Krb5Context.unwrap(Krb5Context.java:983) 
at sun.security.jgss.GSSContextImpl.unwrap(GSSContextImpl.java:403) 
at com.sun.security.sasl.gsskerb.GssKrb5Client.doFinalHandshake(GssKrb5Client.java:234) 
... 44 more 

यह इस सेटअप के साथ AES128 उपयोग करना संभव है:

यहाँ मैं त्रुटि संदेश आ रहा है?

यदि मुझे काम करने के लिए एईएस 128 नहीं मिल रहा है, तो क्या एक सिस्टम पैरामीटर (krb5.conf का उपयोग करने के बजाय) के माध्यम से डिफ़ॉल्ट enctypes सेट करने का कोई तरीका है?

+1

क्या आपके पास असीमित सुरक्षा JAR स्थापित है? –

+0

ऐसा नहीं लगता कि आपको 128-बिट एईएस के लिए इसकी आवश्यकता होनी चाहिए, केवल 256-बिट एईएस के लिए, अगर मुझे सही याद है। – rra

+0

जावा एक अवैध चाबियाँ अपवाद फेंकता है आम तौर पर जब आपको जेसीई की आवश्यकता होती है लेकिन इसे सही तरीके से इंस्टॉल नहीं किया जाता है। –

उत्तर

0

जेम्स केप को सुनें, असीमित सुरक्षा फ़ाइल इंस्टॉल करें। अमेरिकी क्षेत्राधिकार के कारण, जेआरई को उस जार से नहीं भेजा जा सकता है।

संबंधित मुद्दे