sql server - एकीकृत सुरक्षा के बीच अंतर=सही और एकीकृत सुरक्षा=एसएसपीआई




sql-server (6)

एकीकृत सुरक्षा = झूठी: उपयोगकर्ता आईडी और पासवर्ड कनेक्शन में निर्दिष्ट हैं। एकीकृत सुरक्षा = सत्य: वर्तमान विंडोज खाता प्रमाण-पत्र प्रमाणीकरण के लिए उपयोग किया जाता है।

एकीकृत सुरक्षा = एसएसपीआई: यह सच के बराबर है।

हम कनेक्शन स्ट्रिंग से उपयोगकर्ता नाम और पासवर्ड विशेषताओं से बच सकते हैं और एकीकृत सुरक्षा का उपयोग कर सकते हैं

मेरे पास दो ऐप्स हैं जो एकीकृत सुरक्षा का उपयोग करते हैं। एक कनेक्शन स्ट्रिंग में Integrated Security = true असाइन करता है, और अन्य सेट Integrated Security = SSPI

एकीकृत सुरक्षा के संदर्भ में SSPI और true बीच क्या अंतर है?


ध्यान दें कि कनेक्शन स्ट्रिंग्स विशिष्ट हैं कि आप डेटा से कनेक्ट और कैसे कनेक्ट कर रहे हैं। ये एक ही डेटाबेस से कनेक्ट हो रहे हैं लेकिन पहले SQL सर्वर के लिए .NET Framework डेटा प्रदाता का उपयोग कर रहा है। एकीकृत सुरक्षा = सही ओलेडीबी के लिए काम नहीं करेगा।

  • डेटा स्रोत =।; प्रारंभिक कैटलॉग = aspnetdb; एकीकृत सुरक्षा = सही
  • प्रदाता = SQLOLEDB; डेटा स्रोत =।; एकीकृत सुरक्षा = एसएसपीआई; प्रारंभिक कैटलॉग = aspnetdb

जब संदेह में विजुअल स्टूडियो सर्वर एक्सप्लोरर डेटा कनेक्शन का उपयोग करें।


मेरे विचार से,

यदि आप एकीकृत सुरक्षा = एसएसपीआई का उपयोग नहीं करते हैं, तो आपको कनेक्शन स्ट्रिंग में उपयोगकर्ता नाम और पासवर्ड को हार्डकोड करने की आवश्यकता है जिसका अर्थ है "अपेक्षाकृत असुरक्षित" क्यों, क्योंकि सभी कर्मचारियों के पास पहुंच है, यहां तक ​​कि पूर्व कर्मचारी भी दुर्भावनापूर्ण जानकारी का उपयोग कर सकते हैं।


यदि हम SqlConnection के वास्तविक कोड को देखने के लिए .Net Reflector का उपयोग करते हैं तो कई प्रश्नों को उत्तर sspi हैं :) true और sspi समान हैं:

internal class DbConnectionOptions

...

internal bool ConvertValueToIntegratedSecurityInternal(string stringValue)
{
    if ((CompareInsensitiveInvariant(stringValue, "sspi") || CompareInsensitiveInvariant(stringValue, "true")) || CompareInsensitiveInvariant(stringValue, "yes"))
    {
        return true;
    }
}

...

20.02.2018 संपादित करें अब नेट कोर में हम गीथूब पर अपना ओपन सोर्स देख सकते हैं! ConvertValueToIntegratedSecurityInternal विधि के लिए खोजें:

https://github.com/dotnet/corefx/blob/fdbb160aeb0fad168b3603dbdd971d568151a0c8/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionOptions.cs


Microsoft अनुसार वे एक ही बात हैं।

जब false , उपयोगकर्ता आईडी और पासवर्ड कनेक्शन में निर्दिष्ट हैं। जब सही हो, तो मौजूदा विंडोज खाता प्रमाण-पत्र प्रमाणीकरण के लिए उपयोग किए जाते हैं।
मान्यता प्राप्त मान true , false , yes , no , और sspi (दृढ़ता से अनुशंसित) हैं, जो true बराबर true


Integrated Security=true; सभी एसक्यूएल प्रदाताओं में काम नहीं करता है, यह OleDb प्रदाता के साथ उपयोग किए जाने पर एक अपवाद फेंकता है।

तो मूल रूप से Integrated Security=SSPI; SQLClient & OleDB प्रदाता दोनों के साथ काम करने के बाद से प्राथमिकता दी जाती है।

एमएसडीएन के अनुसार वाक्यविन्यास का पूरा सेट यहां है - कनेक्शन स्ट्रिंग सिंटेक्स (ADO.NET)





sql-server