سؤال

من فضلك، هل يمكن لأي شخص أن يقدم طريقة بسيطة ومباشرة لتمكين ASP.NET > Kerberos > Sql Server؟

لدينا ClientMachine > webServer > قاعدة البيانات.يصر العميل على أن الموقع يجب أن يسحب تسجيل الدخول إلى Windows ولا يطالبه، ومن هنا جاءت الحاجة إلى Kerberos والمصادقة المتكاملة.ويجب أيضًا أن ينتحل شخصية المستخدم على خادم قاعدة البيانات، مما يؤدي إلى إجراء قفزة مزدوجة.

مجالنا هو مجال Windows 2003، وهو ما يعني، حسب ما أستطيع أن أقول عبر الإنترنت، أن Kerberos ممكّن.وعلى جهاز كمبيوتر متصل بالمجال، عند تسجيل الدخول، يظهر لي kerbtray أن لدي عددًا كبيرًا من التذاكر، لذا يبدو أنه يعمل.

تعتبر حسابات كمبيوتر خادم الويب وقاعدة البيانات في AD "موثوقة للتفويض".
تعتبر حسابات مستخدمي AD التي يجب أن تصل إلى النظام "موثوقة للتفويض".
عندما يعمل كل شيء، سأضيف المزيد من المستخدمين، في الوقت الحالي اثنين فقط.

يتم تشغيل مثيل Sql Server ضمن LocalSystem على خادم قاعدة البيانات، وهو ما يعني أنه لا يتطلب العبث بأشياء SPN هذه على الإطلاق.

ومع ذلك، عندما أحاول تسجيل الدخول مع أي مستخدم، أحصل على

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. 

يشير إلى فشل القفزة المزدوجة.ومما يعزز ذلك حقيقة أنه يوجد في سجل التطبيق على خادم قاعدة البيانات عدد كبير من الإدخالات من "MSSQL" تقول نفس الشيء.

أنا حقا لا أستطيع أن أصدق مدى صعوبة هذا ...أعني أن IIS وSQL وWindows كلها Microsoft، ألا يمكنهم التحدث بشكل أفضل؟؟؟

لذلك باختصار، لدي

  • مجال كيربيروس,
  • كل من قاعدة البيانات وخادم الويب موثوقان للتفويض
  • المستخدمون الموثوق بهم للتفويض
  • المستخدمين في مجموعة إعلانية
  • المجموعة الإعلانية كمسجل دخول في SQL (والمستخدم في ديسيبل)
  • IIS مع إيقاف تشغيل Anonymous، وIntegrated، وBasic، وDigest off
  • IE مع تمكين المتكاملة على

هل كانت مفيدة؟

المحلول 2

الجواب في النهاية يكمن في SPNs.

تم إعداد هذا النظام على موقع الاختبار الخاص بنا، وهو test.ourcompany.com، لذلك كنت بحاجة إلى إضافة SPN جديد لهذا المرجع.لذلك بالإضافة إلى ما يلي:

HTTP/server 
HTTP/server.ourdomain.com

كنت بحاجة أيضًا إلى إضافة واحدة إضافية لـ:

HTTP/test.ourcompany.com

الجيز، يا لها من معركة!على الأقل انتهى الأمر!:)
شكرا لمساعدة اللاعبين!

نصائح أخرى

تحميل استكشاف أخطاء تفويض Kerberos وإصلاحها.انها منقذة للحياة.
في الصفحة 17 تجد قائمة مراجعة الدليل النشط.اتبع القائمة المرجعية خطوة بخطوة.
في الصفحة 30 تجد قائمة التحقق من تطبيق العميل.التحقق من القائمة المرجعية خطوة بخطوة.
في الصفحة 35 هو قائمة مراجعة الطبقة الوسطى.التحقق من ذلك خطوة بخطوة.
في الصفحة 48 هو قائمة مراجعة النهاية الخلفية.التحقق من ذلك خطوة بخطوة.

إذا كنت لا تزال تواجه مشكلات، فإن المستند يحتوي على قائمة مفصلة بأدوات استكشاف الأخطاء وإصلاحها (kerbtray، klist، ldifde وما إلى ذلك)، شرح مفصل حول كيفية تمكين تسجيل وتدقيق أخطاء المصادقة في سجل أحداث النظام، شرح تفصيلي لجميع رموز الأخطاء في إدخالات سجل الأحداث من تدقيق المصادقة وما إلى ذلك.

بمجرد معرفة ذلك ماذا غير صحيح، وسوف يكون من الأسهل بكثير لإصلاح.

ما تصفه يجب أن يعمل بدون مشكلة.

يجب أن تبدو سلسلة الاتصال الخاصة بك كما يلي:

<add name="IntegratedAuthConnectionString" connectionString=
 "Data Source=DATABASEINSTANCE;Integrated Security=True"
 providerName="System.Data.SqlClient"/>

يجب أن يحدد web.config الخاص بك أيضًا مصادقة Windows

<authentication mode="Windows"/>

أنشئ صفحة اختبار تتخلص من كل شيء من مجموعة Request.ServerVariables وتأكد من أنك ترى اسم المستخدم والمجال المعتمدين.شيء على غرار الكود أدناه

foreach (string s in Request.ServerVariables)
{
    Response.Write(s + ": " + Request.ServerVariables[s] + "<br />");
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top