2012-02-16 6 views
19

पहले हमारे सभी एएसपीनेट अनुप्रयोगों के लिए हम कनेक्ट करने और जोड़ने/अपडेट/हटाने/डेटा प्राप्त करने के लिए SQL सर्वर के भीतर एक sysadmin उपयोगकर्ता का उपयोग कर रहे हैं। हमारा एसक्यूएल एडमिन उस खाते को हटाना और एक डोमेन खाता बनाना चाहता है ताकि हम उस खाते का उपयोग हमारे .net अनुप्रयोगों में कर सकें।एक डोमेन उपयोगकर्ता का उपयोग कर कनेक्शन स्ट्रिंग?

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

 
name="name" connectionString="Data Source=server;Initial Catalog=database;Persist Security Info=True;User ID=user;Password=password" providerName="System.Data.SqlClient" 

क्या कनेक्शन स्ट्रिंग एक डोमेन खाते का उपयोग कर के लिए हो सकता है?

मैंने कोशिश की:

 
name="name" connectionString="Data Source=server;Initial Catalog=database;Persist Security Info=True;User ID=domain\user;Password=password" providerName="System.Data.SqlClient" 

और यह काम नहीं करता।

क्या डोमेन खाते का उपयोग कर SQL सर्वर से कनेक्ट करने का कोई अलग तरीका है?

आपकी सहायता के लिए धन्यवाद।

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; 

यह, ज़ाहिर है, केवल तभी काम करता है: -

+1

** नोट **: आप कनेक्शन स्ट्रिंग एसक्यूएल सर्वर में लॉग इन करने में Windows उपयोगकर्ता नाम और पासवर्ड पारित नहीं हो सकता विस्तृत [यहां] (https के रूप में: // stackoverflow.com/questions/830929/database-windows-authentication-username-password)। यह एक एसक्यूएल उपयोगकर्ता लॉगिन होना चाहिए। – RBT

उत्तर

27

हर प्रकार के रूपों के लिए connectionstrings.com पर एक नज़र डालें एक बहुत आसान संसाधन मैं हर समय का उपयोग

विशेष रूप से, आप इस प्रारूप चाहते हैं प्रश्न में डोमेन खाता कनेक्शन खोलने वाला एक है।

मनमाने ढंग से प्रमाण-पत्रों से जुड़ने का कोई आसान तरीका नहीं है - लेकिन आप impersonate उपयोगकर्ता को प्रश्न में और फिर कनेक्ट कर सकते हैं।

यह दर्द का थोड़ा सा हो सकता है। एक विकल्प यदि उपयोगकर्ता स्थानीय नेटवर्क पर हैं (या आप उनकी ब्राउज़र कॉन्फ़िगरेशन को नियंत्रित करते हैं) तो आपकी साइट पर केर्बेरोस प्रमाणीकरण का उपयोग करना है। पृष्ठों को प्रासंगिक उपयोगकर्ता की अनुमतियों के साथ परोसा जाएगा - फिर आप ऊपर कनेक्शन स्ट्रिंग का उपयोग कर सकते हैं और आईआईएस प्रत्येक उपयोगकर्ता के लिए उपयुक्त क्रेडेंशियल्स के साथ डीबी से कनेक्ट होगा। यह सुरक्षा परिप्रेक्ष्य से विशेष रूप से उपयोगी है क्योंकि डीबी प्रति उपयोगकर्ता आधार पर ऑडिट करने में सक्षम है, और केवल प्रति-ऐप के बजाय अनुमतियां प्रति उपयोगकर्ता/पंक्ति/कॉलम हो सकती हैं।

+0

आपके लिए प्रतिक्रिया के लिए धन्यवाद। अब एक और सवाल आते हैं। तो कनेक्शन स्ट्रिंग में किसी डोमेन खाते का उपयोग करने के लिए मुझे डोमेन खाते का उपयोग करके विंडोज/पीसी में लॉग इन करना होगा, यह एकमात्र तरीका है जिससे यह काम कर सकता है? –

+2

यह नहीं है कि आप किसके रूप में लॉग इन हैं, यह वेबसाइट किसके रूप में चल रही है। उदाहरण के लिए एप्लिकेशन पूल में जाएं और उपयोगकर्ता को (कहें) MyDomain \ MyWeb.Service - तब उस उपयोगकर्ता को डेटाबेस के लिए अनुमति दें। यह करने का यह सबसे आसान तरीका है - लेकिन सभी कनेक्शन डीबी को एक उपयोगकर्ता के रूप में किया जाएगा। यदि आप चाहते हैं कि कनेक्शन प्रत्येक उपयोगकर्ता की अनुमतियों के लिए विशिष्ट हों (उदाहरण के लिए पीसीआई अनुपालन के लिए) आपको क्रेडेंशियल्स के माध्यम से गुज़रने की आवश्यकता है - या तो उचित ऑथ मॉडल चुनकर या प्रतिरूपण – Basic

+0

विस्मयकारी का उपयोग करके। आपकी सहायता के लिए बहुत धन्यवाद। –

2
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; 

उपरोक्त आपके SQL सर्वर उदाहरण के विरुद्ध Windows प्रमाणीकरण के लिए एक कनेक्शन स्ट्रिंग है।

4

हाँ, यह प्रयास करें:

Data Source=server;Initial Catalog=database;Integrated Security=SSPI; 

यह निर्दिष्ट करता है कि आप एकीकृत Windows प्रमाणीकरण जहां आप अभी भी (SQL सर्वर प्रमाणीकरण का उपयोग करने के लिए भले ही उपयोगकर्ता नाम आपके द्वारा दर्ज एक Windows डोमेन/उपयोगकर्ता की तरह दिखाई देता कोशिश कर रहे थे उपयोग करना चाहते हैं खाता एसक्यूएल सर्वर अभी भी मानक एसक्यूएल सर्वर प्रमाणीकरण के रूप में व्यवहार करता है)

इसके connectionstrings.com

+0

प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। –

3

एकीकृत सुरक्षा का प्रयोग करें एक बार देख ले:

Integrated Security=SSPI 

कौन सा एक प्रकार है:

Trusted_Connection=True 

विभिन्न कनेक्शन तार (डेटाबेस की एक किस्म के लिए) connectionstrings.com पर पाया जा सकता।

इन दोनों के साथ आपको यह सुनिश्चित करने की आवश्यकता है कि एप्लिकेशन उस खाते के अंतर्गत चल रहा है जिसके साथ आपको लॉगिन करना है।

2

यदि आप अलग-अलग उपयोगकर्ता खाते का उपयोग करना चाहते हैं तो लॉग इन उपयोगकर्ता के पास आपके पास दो विकल्प हैं।

विकल्प 1

आप आवेदन पूल पहचान करने के लिए उपयोगकर्ता जोड़ सकते हैं।

इसके लिए एप्लिकेशन पूल की अग्रिम सेटिंग पर जाएं और उपयोगकर्ता को इच्छित उपयोगकर्ता का उपयोग करने के लिए पहचान संपादित करें।

विकल्प 2

वेब config में इस जोड़ें:

<identity impersonate="true" userName="Domain\User" password="Password" /> 

और इस संबंध stirng का उपयोग करें:

<add name="Name" connectionString="Data source=SqlServer;Initial Catalog=DbName;Integrated security=True" providerName="System.Data.SqlClient"/> 

अधिक जानकारी के लिए देखें: https://msdn.microsoft.com/en-us/library/134ec8tc.aspx

इसके अलावा एक और अच्छा लेख मिला उसे https://www.codeproject.com/tips/520341/implement-impersonation-in-asp-net

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