ما هو الفرق بين الأمان المتكامل = الأمان الحقيقي والمتكامل = SSPI؟
-
22-07-2019 - |
سؤال
لدي تطبيقان يستخدمان الأمان المتكامل. واحد يعين Integrated Security = true
في سلسلة الاتصال ، والمجموعات الأخرى Integrated Security = SSPI
.
ماهو الفرق بين SSPI
و true
في سياق الأمن المتكامل؟
المحلول
وفق مايكروسوفت كلهم نفس الشئ.
متي
false
, ، يتم تحديد معرف المستخدم وكلمة المرور في الاتصال. عندما يكون صحيحًا ، يتم استخدام بيانات اعتماد حساب Windows الحالية للمصادقة.
القيم المعترف بها هيtrue
,false
,yes
,no
, ، وsspi
(موصى به بشدة) ، وهو ما يعادلtrue
.
نصائح أخرى
Integrated Security=true;
لا يعمل في جميع مزودي SQL ، فإنه يلقي استثناء عند استخدامه مع OleDb
مزود.
لذلك في الأساس Integrated Security=SSPI;
يفضل لأن يعمل مع كليهما SQLClient
& OleDB
مزود.
إليك المجموعة الكاملة من بناء الجملة وفقًا لـ MSDN - بناء جملة سلسلة الاتصال (ado.net)
باستخدام مصادقة Windows
يوصى بالاتصال بخادم قاعدة البيانات باستخدام مصادقة Windows ، المعروف باسم الأمان المتكامل. لتحديد مصادقة Windows ، يمكنك استخدام أي من أزواج القيمة الرئيسية التالية مع مزود البيانات. إطار عمل صافي لخادم SQL:
Integrated Security = true;
Integrated Security = SSPI;
ومع ذلك ، يعمل الثاني فقط مع مزود البيانات .NET Framework OLEDB. إذا قمت بتعيين Integrated Security = true
للحصول على connectionstring يتم طرح استثناء.
لتحديد مصادقة Windows في مزود البيانات. Net Framework لـ ODBC ، يجب عليك استخدام زوج القيمة الرئيسية التالية.
Trusted_Connection = yes;
العديد من الأسئلة تحصل على إجابات إذا استخدمنا .Net Reflector
لمعرفة الكود الفعلي لـ SqlConnection
:)
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الآن في .NET Core يمكننا رؤية المصدر المفتوح على GitHub! ابحث عن طريقة ConvertValuetoIngrategratedSecurityInternal:
الأمان المتكامل = خطأ: يتم تحديد معرف المستخدم وكلمة المرور في الاتصال. الأمان المتكامل = صحيح: تستخدم بيانات اعتماد حساب Windows الحالية للمصادقة.
الأمان المتكامل = SSPI: هذا يعادل True.
يمكننا تجنب سمات اسم المستخدم وكلمة المرور من سلسلة الاتصال واستخدام الأمان المتكامل
اسمحوا لي أن أبدأ Integrated Security = false
false
يتم تحديد معرف المستخدم وكلمة المرور في سلسلة الاتصال.
true
تستخدم بيانات اعتماد حساب Windows للمصادقة.
القيم المعترف بها هي true
, false
, yes
, no
, ، و SSPI
.
إذا User ID
و Password
يتم تحديدها وتم تعيين الأمان المتكامل إلى true
, ، ومن بعد User ID
و Password
سيتم تجاهله وسيتم استخدام الأمن المتكامل
لاحظ أن سلاسل الاتصال خاصة بـ ماذا او ما و كيف أنت تتصل بالبيانات. يتم توصيلها بنفس قاعدة البيانات ولكن الأول يستخدم .NET Framework Data Server. الأمان المتكامل = صحيح لن يعمل مع OLEDB.
- مصدر البيانات =. ؛ الكتالوج الأولي = ASPNETDB ؛ أمان متكامل = صحيح
- Provider = sqloledb ؛ مصدر البيانات =.
عندما تكون في شك ، استخدم اتصالات بيانات Visual Studio Server Explorer.
- ما هو SSPI?
- بناء سلاسل الاتصال
True صالح فقط إذا كنت تستخدم مكتبة .NET SQLClient. إنه غير صالح عند استخدام OLEDB. حيث يكون SSPI BVAID في كلا ، فأنت تستخدم .NET SQLClient Library أو OLEDB.
من وجهة نظري،
إذا كنت لا تستخدم الأمان المتكامل = SSPI ، فأنت بحاجة إلى ترميز اسم المستخدم وكلمة المرور في سلسلة الاتصال مما يعني "غير آمن نسبيًا" لماذا ، لأن جميع الموظفين يمكنهم الوصول إلى الموظف السابق يمكنه استخدام المعلومات بشكل ضار.