2008-10-03 13 views
52

मैं वर्तमान में SQL सर्वर प्रमाणीकरण के बजाय Windows प्रमाणीकरण का उपयोग कर अपने जावा ईई वेब अनुप्रयोग से SQL सर्वर डेटाबेस से कनेक्शन बनाने का तरीका जांच रहा हूं। मैं इस ऐप को टॉमकैट 6.0 से बाहर चला रहा हूं, और माइक्रोसॉफ्ट जेडीबीसी ड्राइवर का उपयोग कर रहा हूं।क्या मैं जावा ईई वेबपैड से विंडोज प्रमाणीकरण का उपयोग कर SQL सर्वर से कनेक्ट कर सकता हूं?

dbDriver    = com.microsoft.sqlserver.jdbc.SQLServerDriver 
dbUser    = user 
dbPass    = password 
dbServer    = localhost:1433;databaseName=testDb 
dbUrl     = jdbc:sqlserver://localhost:1433 

मैं इस फैशन में एक एसक्यूएल सर्वर डेटाबेस से कनेक्ट जब एसक्यूएल सर्वर प्रमाणीकरण का उपयोग के साथ शून्य समस्या है: मेरी कनेक्शन गुण फ़ाइल के रूप में निम्नानुसार लग रहा है।

क्या कोई तरीका है कि मैं उपयोगकर्ता के विंडोज प्रमाणीकरण के प्रमाण पत्र पुनर्प्राप्त कर सकता हूं और का उपयोग कर सकता हूं कि SQL सर्वर के लिए प्रमाणीकरण?

अद्यतन: मैं ASP.net में जानते हैं, webapp, जो वास्तव में मैं क्या देख रहा हूँ के लिए उपयोग के लिए Windows प्रमाणीकरण की स्थापना के लिए एक रास्ता है, सिवाय इसके कि मैं के लिए एसक्यूएल सर्वर के लिए रवाना उस टोकन पास करना चाहते हैं डेटाबेस तक पहुंच

उत्तर

72

मुझे नहीं लगता कि एक डेटाबेस के लिए ब्राउज़र से उपयोगकर्ता क्रेडेंशियल धक्का कर सकते हैं (और यह समझ में आता है करता है? मुझे नहीं लगता)

लेकिन कनेक्ट करने के लिए आप बिलाव करने वाले उपयोगकर्ता की साख उपयोग करना चाहते हैं एसक्यूएल सर्वर के लिए आप माइक्रोसॉफ्ट के जेडीबीसी ड्राइवर का उपयोग कर सकते हैं। बस इस तरह अपने JDBC- URL बनाने:

jdbc:sqlserver://localhost;integratedSecurity=true; 

और

http://jtds.sourceforge.net/faq.html#driverImplementation पर बिलाव के बिन निर्देशिका (sqljdbc_auth.dll ड्राइवर के साथ प्रदान की)

MSDN > Connecting to SQL Server with the JDBC Driver > Building the Connection URL

+3

ब्राउज़र से डेटाबेस में उपयोगकर्ता क्रेडेंशियल को धक्का क्यों नहीं देता है? मुझे लगता है कि बहु-हॉप प्रमाणीकरण वास्तव में ओपी की तलाश में था। यह देखते हुए कि मैं इस जवाब पर 3 साल देर से हूं, लेकिन मैं आपके तर्क को समझना चाहता हूं। – KyleM

5

जब तक आपके पास कुछ वास्तव में अनिवार्य कारण नहीं है, तो मैं एमएस जेडीबीसी चालक को मिटाने का सुझाव देता हूं।

इसके बजाय, jtds jdbc driver का उपयोग करें। सिंगल-साइन-ऑन (मूल प्रमाणीकरण) के लिए कॉन्फ़िगर कैसे करें और मूल डीएलएल को कहां रखा जाए, यह सुनिश्चित करने के लिए कि JVM द्वारा लोड किया जा सके, jtds वितरण में README.SSO फ़ाइल पढ़ें।

+0

प्रश्न वास्तव में एसएसओ (एकल साइन ऑन) की तलाश में है। – jim

+0

@jim: यदि आपके पास लिनक्स पर केर्बेरोस के आधार पर प्रमाणीकरण है तो आपके पास एसएसओ हो सकता है, लेकिन मुझे लिनक्स पर एमएस एसक्यूएल प्रमाणीकरण के लिए इसका उपयोग करने का एकमात्र तरीका डेटाडायरेक्ट ड्राइवर द्वारा किया जा सकता है। –

+0

जेटीडीएस ड्राइवर बेहतर क्यों है? मैं समझता हूं कि यह कनेक्शन पूलिंग का समर्थन नहीं करता है, जो मेरे लिए आवश्यक है। – megaflop

22

देखो करने के लिए उपयुक्त DLL कॉपी

जेटीडीएस द्वारा उपयोग किया जाने वाला यूआरएल प्रारूप क्या है?

jTDS के लिए URL स्वरूप है:

jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]] 

... डोमेन में प्रमाणित करने के लिए विंडोज डोमेन निर्दिष्ट करता है वर्तमान और उपयोगकर्ता नाम और पासवर्ड प्रदान की जाती हैं, तो jTDS विंडोज (NTLM) प्रमाणीकरण का उपयोग करता। सामान्य SQL सर्वर प्रमाणीकरण के बजाय (यानी उपयोगकर्ता और पासवर्ड प्रदान किया गया डोमेन उपयोगकर्ता और पासवर्ड)। यह गैर-विंडोज क्लाइंट को उन सर्वरों में लॉग इन करने की अनुमति देता है जो केवल Windows प्रमाणीकरण को स्वीकार करने के लिए कॉन्फ़िगर किए गए हैं।

यदि डोमेन पैरामीटर मौजूद है लेकिन कोई उपयोगकर्ता नाम और पासवर्ड प्रदान नहीं किया गया है, तो जेटीडीएस अपनी मूल एकल-साइन-ऑन लाइब्रेरी का उपयोग करता है और लॉग इन विंडोज उपयोगकर्ता के क्रेडेंशियल के साथ लॉग इन करता है (इसके लिए काम करने के लिए स्पष्ट रूप से होना आवश्यक है विंडोज़, एक डोमेन में लॉग इन है, और एसएसओ लाइब्रेरी भी स्थापित है - इसे कैसे करें इस पर वितरण में README.SSO से परामर्श लें)।

+1

बहुत उपयोगी जानकारी - विशेष रूप से डोमेन के बारे में! – StephMW

3

मुझे विंडोज प्रमाणीकरण का उपयोग कर एमएस एसक्यूएल 2005 से कनेक्ट करने में समस्या हो रही थी। मैं इस और अन्य मंचों से सहायता के साथ इस मुद्दे को हल करने में सक्षम था। यहाँ मैं क्या किया है:

  1. JTDS ड्राइवर
  2. JDBC में "डोमेन =" संपत्ति का उपयोग न करें स्थापित करें: jtds :: // [:] [/] [; = [; .. ।]] स्ट्रिंग
  3. वेब सर्वर मशीन पर c: \ windows \ system32 निर्देशिका (dll का पंजीकरण आवश्यक नहीं था) में ntlmauth.dll स्थापित करें।
  4. डोमेन डेटाबेस में अपाचे टॉमकैट सेवा के लिए लॉगऑन पहचान बदलें SQL डेटाबेस सर्वर तक पहुंच के साथ उपयोगकर्ता (उपयोगकर्ता के लिए dbo.master तक पहुंच नहीं होना आवश्यक था)।

मेरे पर्यावरण: Windows XP clinet Windows 2003 पर अपाचे बिलाव 6 होस्टिंग एमएस एसक्यूएल 2005 बैकएंड साथ

6

यह वास्तव में मेरे लिए काम करता है:

README.SSO कि jtdsd वितरण के साथ आता है प्रति :

काम पर सिंगल साइन ऑन करने के लिए, जेटीडीएस मूल एसपीपीआई लाइब्रेरी ntlmauth.dll लोड करने में सक्षम होना चाहिए। इस डीएलएल को सिस्टम पथ में कहीं भी रखें (PATH सिस्टम वैरिएबल द्वारा परिभाषित) और आप सभी सेट हैं।

मैं अपने JRE/bin फ़ोल्डर

में रखा मैं कॉन्फ़िगर किया गया एक बंदरगाह एसक्यूएल सर्वर उदाहरण (2302) के लिए समर्पित एक उदाहरण के नाम के लिए की जरूरत को कम करने के लिए - बस कुछ मैं करता हूँ। lportal मेरा डेटाबेस नाम है।

jdbc.default.url=jdbc:jtds:sqlserver://192.168.0.147:2302/lportal;useNTLMv2=true;domain=mydomain.local 
संबंधित मुद्दे

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