2012-06-27 4 views
15

क्या मैक से विंडोज प्रमाणीकरण/एकीकृत सुरक्षा का उपयोग कर SQL सर्वर से कनेक्ट करना संभव है? मैं माइक्रोसॉफ्ट द्वारा प्रदान किए गए टाइप 4 जेडीबीसी ड्राइवर का उपयोग कर रहा हूं। फ्रंट एंड (एक फॉर्म एप्लीकेशन) जावा में कोडित है। सबकुछ विंडोज़ पर पूरी तरह से काम करता है लेकिन कार्यालय में एक व्यक्ति मैक का उपयोग करता है।मैक पर जेबीडीसी का उपयोग कर SQL सर्वर के लिए विंडोज प्रमाणीकरण

क्या यह संभव है? एफवाईआई, मैंने मैक का कभी भी उपयोग नहीं किया है, इसलिए मैं उनके साथ नौसिखिया हूं। मैंने पूरे इंटरनेट पर खोज की है लेकिन मुझे कोई समाधान नहीं मिला है। अग्रिम धन्यवाद।

उत्तर

4

Using Kerberos Integrated Authentication to Connect to SQL Server

एसक्यूएल सर्वर, एक आवेदन संकेत मिलता है कि यह प्रकार 4 Kerberos का उपयोग कर एक डेटाबेस से कनेक्ट करना चाहता है authenticationScheme कनेक्शन संपत्ति का उपयोग कर सकते के लिए Microsoft JDBC ड्राइवर 4.0 में शुरू एकीकृत प्रमाणीकरण ।


एसक्यूएल सर्वर के लिए jTDS JDBC ड्राइवर Windows प्रमाणीकरण बस FAQ में वर्णित के रूप डोमेन संपत्ति का उपयोग कर समर्थन करता है।

डोमेन

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

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

20

यह जानकारी मेरे अनुभव में आना मुश्किल है। माइक्रोसॉफ्ट ने नियमों को बदल दिया और authenticationScheme पैरामीटर जोड़ा क्योंकि मेरी सभी खोजों ने गलत (पुरानी) जानकारी बदल दी।

jdbc:jtds:sqlserver://123.123.123;instance=server1;databaseName=students;integratedSecurity=true;authenticationScheme=JavaKerberos 

इसके अलावा चालक गुण में सेट "Domain": अगले व्यक्ति की मदद करने के हित में, यहाँ एक कनेक्शन स्ट्रिंग है कि काम करता है का एक उदाहरण है। किसी भी उपयोगकर्ता नाम सेटिंग में डोमेन शामिल न करें।

यह मैक ओएसएक्स पर jtds के साथ गिलहरी एसक्यूएल (जावा) का उपयोग करके परीक्षण किया गया था। उम्मीद है कि पिछली वाक्य में खोज शब्द हैं जो कोई भी इसका उपयोग कर सकता है जिसे इस जानकारी को जानने की आवश्यकता है।

+0

करने के लिए serverSp=$SPN जोड़ने यह केवल जगह मैं सही जानकारी मिल गई थी। –

+0

ग्राहक: Grails/Groovy 2.0.4, jtds ड्राइवर MacOSX (ग्रहण के तहत)। सर्वर: विंडोज प्रमाणीकरण का उपयोग कर एमएसएसएलएल 2008। –

+1

यह कहने लायक है कि आपको jTDS ड्राइवर (http://jtds.sourceforge.net/index.html) डाउनलोड करने की आवश्यकता है, यह केर्बेरोज एकीकरण के साथ एकमात्र ऐसा प्रतीत होता है। मुझे पता है कि यह कनेक्शन स्ट्रिंग में है लेकिन कुछ लोग इसे याद कर सकते हैं और अन्य ड्राइवरों का उपयोग करके कनेक्ट करने में असफल हो सकते हैं। – lotif

2

मै मैक पर जेटीडीएस का उपयोग करता हूं (10.9)।

इस ड्राइवर का उपयोग करके आपको हमेशा जैसे उपयोगकर्ता नाम और पासवर्ड निर्दिष्ट करना होगा, केवल अंतर यह है कि आपको कनेक्शन स्ट्रिंग में डोमेन = WHATEVERTHENTDOMAIN निर्दिष्ट करने की आवश्यकता है (या यदि आप इसके बजाय कनेक्शन गुण)।

तो एक नमूना कनेक्शन स्ट्रिंग है:

jdbc:jtds:sqlserver://db_server:1433/DB_NAME;domain=NT_DOMAIN_NAME 

jTDS चालक तो उपयोगकर्ता नाम और पासवर्ड निर्दिष्ट डोमेन के लिए लॉग इन करने के लिए NTLM का उपयोग करता है।

0

यह एक पुरानी पोस्ट है लेकिन कुछ लोगों के लिए प्रासंगिक हो सकती है। यह अन्य SO post देखें जो जेडीबीसी के माध्यम से एक लिनक्स मशीन से विंडोज प्रमाणीकरण के साथ SQL सर्वर से कनेक्ट करने का तरीका बताता है। यह मैक पर भी काम करेगा।

0

jTDS माइक्रोसॉफ्ट के JDBC ड्राइवर से हीन है

(विशेष रूप से, यह मापदंडों के प्रकार पता लगा सकते हैं नहीं एक तैयार बयान में) हाँ, आप सक्रिय निर्देशिका प्रमाणीकरण का उपयोग एमएस एसक्यूएल सर्वर को प्रमाणित कर सकते हैं, के रूप में सक्रिय निर्देशिका है बस करबरोस + एलडीएपी, जो खुला स्रोत और मैक

पर लागू

करबरोस config /etc/krb5.conf हैं:

[libdefaults] 
default_realm = YOUR_REALM.NET 

[realms] 
YOUR_REALM.NET = { 
    kdc = host.your-domain.net 
} 

मैं KDC की पूरी तरह से योग्य डोमेन नाम का उपयोग करने के लिए आवश्यक है, बस नहीं डोमेन नाम

JDBC कनेक्शन स्ट्रिंग:

jdbc:sqlserver://$host;database=$db;integratedSecurity=true;authenticationScheme=JavaKerberos 

तो $hostMSSQLSrv/$host के SPN नहीं है, JDBC कनेक्शन स्ट्रिंग

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