12

के खिलाफ केर्बेरो प्रमाणीकरण मैं अभी भी एसएसओ (* निक्स पर चल रहा है) के लिए जावा आधारित समाधान खोजने की कोशिश कर रहा हूं, जिसे मैं सक्रिय निर्देशिका/डोमेन नियंत्रक के खिलाफ अधिकृत करने के लिए जेबॉस पर उपयोग कर सकता हूं। मैंने शुरुआत में एनटीएलएम के माध्यम से ऐसा करने की कोशिश की, लेकिन छोड़ दिया क्योंकि यह विंडोज सर्वर> = 2008 पर समर्थित नहीं होगा।जावा एसएसओ: सक्रिय निर्देशिका

इसलिए मैं केर्बेरोस का उपयोग करके इसे कार्यान्वित करने की कोशिश कर रहा हूं, लेकिन यह सही/काम करना असंभव लगता है उपाय। कृपया इस तरह के एक विन्यास स्थापित करने के लिए समझाने के सही दिशा में मुझे इशारा करते हैं, कैसे करने के लिए सक्रिय निर्देशिका और/या डोमेन नियंत्रक के खिलाफ मान्य करने के लिए:

  1. पता लगाना यदि खाता मान्य है और
  2. लाने उपयोगकर्ता की समूह सूची

किसी भी मदद की सराहना की जाती है!


अद्यतन

मैं एक समाधान jcifs-ext-0.9.4 और jcifs-krb5-1.3.12 के प्रयोग पर काम कर रहा हूँ।

<web-app> 
    <!-- servlet/servlet-mapping/welcome-file-list skipped --> 

<filter> 
<filter-name>auth</filter-name> 
<filter-class>jcifs.http.AuthenticationFilter</filter-class> 

<init-param> 
<param-name>java.security.auth.login.config</param-name> 
<param-value>/WEB-INF/login.conf</param-value> 
</init-param> 

<init-param> 
<param-name>jcifs.spnego.servicePrincipal</param-name> 
<param-value>HTTP/[email protected]</param-value> 
</init-param> 

<init-param> 
<param-name>jcifs.spnego.servicePassword</param-name> 
<param-value>supersecret</param-value> 
</init-param> 

<init-param> 
<param-name>sun.security.krb5.debug</param-name> 
<param-value>true</param-value> 
</init-param> 

<init-param> 
<param-name>java.security.krb5.realm</param-name> 
<param-value>mydomain.com</param-value> 
</init-param> 

<init-param> 
<param-name>java.security.krb5.kdc</param-name> 
<param-value>testdom01.mydomain.com </param-value> 
</init-param> 

<init-param> 
<param-name>jcifs.smb.client.domain</param-name> 
<param-value>TESTDOMAIN</param-value> 
</init-param> 

<init-param> 
<param-name>jcifs.http.enableNegotiate</param-name> 
<param-value>true</param-value> 
</init-param> 

<init-param> 
<param-name>jcifs.http.basicRealm</param-name> 
<param-value>mydomain.com</param-value> 
</init-param> 

<init-param> 
<param-name>jcifs.http.domainController</param-name> 
<param-value>testdom01.mydomain.com</param-value> 
</init-param> 

</filter> 
<filter-mapping> 
<filter-name>auth</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 
</web-app> 

इस ओर जाता है निम्नलिखित स्टैकट्रेस करने के लिए एप्लिकेशन का उपयोग करने की कोशिश कर रहा है, तो:

2010-07-22 15:53:10,588 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/google].[default]] Servlet.service() for servlet default threw exception 
java.lang.ArrayIndexOutOfBoundsException 
     at java.lang.System.arraycopy(Native Method) 
     at jcifs.ntlmssp.Type2Message.toByteArray(Type2Message.java:261) 
     at jcifs.spnego.Authentication.processNtlm(Authentication.java:265) 
     at jcifs.spnego.Authentication.process(Authentication.java:233) 
     at jcifs.http.Negotiate.authenticate(Negotiate.java:46) 
     at jcifs.http.AuthenticationFilter.doFilter(AuthenticationFilter.java:192) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
     at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 
     at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175) 
     at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) 
     at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) 
     at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) 
     at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) 
     at java.lang.Thread.run(Thread.java:619) 

किसी भी मदद की सराहना की है नीचे वर्णित के रूप में मैं web.xml की स्थापना की।

उत्तर

5

ऐसा करने के लिए, आपको वास्तव में एलडीएपी का उपयोग करने की आवश्यकता है। सौभाग्य से आपके लिए जावा केर्बेरोस और एलडीएपी दोनों के लिए ठोस समर्थन है। विस्तृत प्रक्रिया http://java.sun.com/products/jndi/tutorial/ldap/security/gssapi.html पर है।

चरणों का अवलोकन: - करबरोस करने के लिए प्रमाणीकृत - ग्रहण करने के लिए उपयोग किए गए Kerberos उपयोगकर्ता पहचान - सक्रिय निर्देशिका LDAP सर्वर को जीएसएसएपीआई बाँध प्रदर्शन करना - LDAP

+0

इसे डाउनवोट क्यों मिला? केर्बेरोस में उपयोगकर्ता के समूह की सूची नहीं है! – Borealid

0

हम Jespa का उपयोग NTLM प्रमाणीकरण को संभालने के लिए अधिक समूह सूची प्राप्त करें, हमने टॉमकैट & दोनों पर परीक्षण किया है ग्लासफ़िश सोलारिस पर चल रहा है, आईई & फ़ायरफ़ॉक्स दोनों समर्थित हैं, और प्रशिक्षु क्रोम अब एनटीएलएम का भी समर्थन करता है। हालांकि आपको वाणिज्यिक उपयोग के लिए लाइसेंस की आवश्यकता होगी, लेकिन मैं निश्चित रूप से इसकी अनुशंसा करता हूं।

+0

मेरे लिए जेस्पा के साथ समस्या यह है कि यह जावा ईई मानता है और Play जैसे फ्रेमवर्क का उपयोग करके मुझे यह अनुपयोगी बनाता है – andyczerwonka

3

आप Waffle का उपयोग कर सकते हैं। यह नि: शुल्क है और नेगोशिएट, एनटीएलएम और केर्बेरोज का समर्थन करता है। आप इसके साथ उपयोगकर्ता की समूह सूची भी देख सकते हैं।

"WAFFLE - विंडोज प्रमाणीकरण कार्यात्मक फ्रेमवर्क (लाइट संस्करण) एक मूल सी # और जावा लाइब्रेरी है जो विंडोज प्रमाणीकरण (नेगोशिएट, एनटीएलएम और केर्बेरोस) सबकुछ करता है।"

+2

दुर्भाग्य से Win32 एपीआई का उपयोग करता है और केवल विंडोज़ पर चलता है – MrG

0

मैंने एक लेख लिखना शुरू किया क्योंकि मैंने केर्बेरोस और जेबॉस के साथ प्रयोग किया था, इस योजना को शुरुआती लोगों के लिए जेबॉस के साथ केर्बेरोस सेट करने और उपयोग करने की पूरी मार्गदर्शिका है। मैं यह नहीं कह रहा हूं कि यह एक पूर्ण उत्तर है लेकिन यदि आप प्रश्न पूछते हैं तो मैं उन्हें जवाब देने और ब्लॉग में जोड़ने का प्रयास कर सकता हूं।

the article

0

आप Kerberos, आपकी मशीन पर ई विन्यास डिबग करने के लिए तो आप नीचे दिए गए लिंक से एप्लिकेशन डाउनलोड कर सकते हैं। https://github.com/shubham49/debugSSO एप्लिकेशन डाउनलोड करें और इसे वेबलॉगिक सर्वर पर तैनात करें। तैनाती के बाद होम पेज खोलें और आपको कॉन्फ़िगरेशन डीबग करने के लिए विभिन्न परीक्षणों का सामना करना पड़ेगा।

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