سؤال

لقد قمت للتو بإنشاء موقع ويب أساسي لـ ASP MVC للنشر على الشبكة الداخلية الخاصة بنا.ويتوقع أن يكون المستخدمون في نفس المجال مثل مربع IIS، وإذا لم تكن مستخدم Windows مصادقًا عليه، فيجب ألا تتمكن من الوصول.

لقد قمت للتو بنشر هذا على IIS6 الذي يعمل على Server 2003 R2 SP2.يتم تكوين تطبيق الويب باستخدام مجموعته الخاصة وحساب مستخدم المجموعة الخاص به.يتم تعيين خيارات IIS Directory Security لتطبيق الويب على "Windows Integrated Security" فقط ويحتوي ملف web.config على:

<authentication mode="Windows" />

من جلسة سطح المكتب البعيد على خادم IIS6 نفسه، يمكن لنافذة متصفح IE7 مصادقة تطبيق الويب والتنقل فيه بنجاح إذا تم الوصول إليه عبر http://localhost/myapp.

ومع ذلك، أيضًا من الخادم، إذا تم الوصول إليه عبر اسم الخادم (على سبيل المثال http://myserver/myapp) ثم يعرض IE7 مربع حوار بيانات الاعتماد الذي يؤدي في النهاية بعد ثلاث محاولات لإدخال بيانات الاعتماد الصحيحة إلى إرجاع "خطأ HTTP رقم 401.1 - غير مصرح به:تم رفض الوصول بسبب أوراق اعتماد غير صالحة".

تحدث نفس المشكلة عندما تستعرض محطة العمل للوصول إلى عنوان url لتطبيق الويب (باستخدام اسم الخادم بشكل طبيعي وليس "المضيف المحلي").

يعد خادم IIS6 عضوًا في المجال الوحيد الذي لدينا ولا يحتوي على جدار حماية ممكّن.

هل هناك شيء فشلت في تكوينه بشكل صحيح حتى يعمل هذا؟

شكرًا،


لقد قمت بتجربة الاقتراحات المقدمة من Matt Ryan وGraphain وMike Dimmick حتى الآن دون جدوى.لقد قمت للتو بإنشاء معمل اختبار الجهاز الظاهري باستخدام Server 2003 DC وخادم منفصل 2003 IIS6 وأنا قادر على تكرار المشكلة.

أرى إدخالاً في سجل أحداث النظام الخاص بخادم IIS6 في المرة الأولى التي أحاول فيها الوصول إلى الموقع عبر عنوان URL غير المضيف المحلي (على سبيل المثال http://iis/myapp).تفشل عناوين URL لـ FQDN أيضًا.

مصدر:Kerberos، معرف الحدث:4
تلقى عميل kerberos خطأ KRB_AP_ERR_MODIFIED من مضيف الخادم/iis.test.local.وكان اسم الهدف المستخدم هو HTTP/iis.test.local.يشير هذا إلى أن كلمة المرور المستخدمة لتشفير تذكرة خدمة kerberos تختلف عن تلك الموجودة على الخادم الهدف.بشكل عام، يرجع ذلك إلى حسابات الأجهزة ذات الأسماء المتطابقة في المجال الهدف (TEST.LOCAL) ونطاق العميل.

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

المحلول

بعد إجراء بحث مكثف على Google، تمكنت من العثور على حل لمقالة MSDN التالية:
كيف:إنشاء حساب خدمة لتطبيق ASP.NET 2.0

على وجه التحديد قسم الاعتبارات الإضافية الذي يصف "إنشاء أسماء الخدمة الأساسية (SPN) لحسابات المجال" باستخدام أداة setspn من أدوات دعم Windows:

setspn -A HTTP/myserver MYDOMAIN\MyPoolUser
setspn -A HTTP/myserver.fqdn.com MYDOMAIN\MyPoolUser

أدى هذا إلى حل مشكلتي في كل من معمل الاختبار الافتراضي وخادم المشكلة الأصلي.

هناك أيضًا ملاحظة مهمة في المقالة مفادها أن استخدام مصادقة Windows مع مستخدمي التجمع المخصص يقيد اسم DNS المرتبط ليستخدمه هذا التجمع فقط.أي أن تجمعًا آخر بهوية أخرى يجب أن يكون مرتبطًا باسم DNS مختلف.

نصائح أخرى

يبدو الأمر وكأنه ميزة أمان التحقق من الاسترجاع الجديدة لنظام التشغيل Windows Server 2003 المزود بحزمة الخدمة SP1.كما أفهمها، تم تصميمه لمنع نوع معين من هجمات الاعتراض.

من http://support.microsoft.com/kb/896861

أعراض

عند استخدام اسم المجال المؤهل بالكامل (FQDN) أو رأس مضيف مخصص لاستعراض موقع ويب محلي تتم استضافته على جهاز كمبيوتر يقوم بتشغيل Microsoft Internet Information Services (IIS) 5.1 أو IIS 6، قد تتلقى رسالة خطأ تفيد بأن يشبه ما يلي:HTTP 401.1 - غير مصرح به:فشل تسجيل الدخول في حدوث هذه المشكلة عندما يستخدم موقع الويب مصادقة متكاملة وله اسم يتم تعيينه على عنوان الاسترجاع المحلي.

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

سبب

تحدث هذه المشكلة إذا قمت بتثبيت Microsoft Windows XP Service Pack 2 (SP2) أو Microsoft Windows Server 2003 Service Pack 1 (SP1).يتضمن Windows XP SP2 وWindows Server 2003 SP1 ميزة أمان التحقق من الاسترجاع والتي تم تصميمها للمساعدة في منع هجمات الانعكاس على جهاز الكمبيوتر الخاص بك.ولذلك، تفشل المصادقة إذا كان FQDN أو رأس المضيف المخصص الذي تستخدمه لا يتطابق مع اسم الكمبيوتر المحلي.

الحل البديل

  • طريقة 1:تعطيل فحص الاسترجاع
  • الطريقة الثانية:تحديد أسماء المضيفين

يرى http://support.microsoft.com/kb/896861 للتفاصيل.


تحرير - لاحظت للتو أنك قلت إنك ترى هذا من أجهزة الكمبيوتر العميلة أيضًا...هذا أكثر غرابة.لكنني ما زلت أتطلع إلى اختبار أحد هذه الحلول لمعرفة ما إذا كان قد أدى إلى حل المشكلة (وإذا كان الأمر كذلك، فقد يشير إلى وجود مشكلة في تكوين DNS الخاص بك).

يبدو لي كما لو أنك فعلت كل شيء بشكل صحيح.

أنا متأكد من ذلك ولكن هل تأكدت من أنك تستخدم "DOMAIN\user" كحساب مستخدم وليس فقط "user"؟

يرسل IE7 فقط بيانات اعتماد Windows (NTLM وKerberos) إذا قام بتعريف الخادم على أنه موجود على الإنترانت.أضاف IE7 أيضًا ميزة تأمين منطقة الإنترانت - إذا لم تكن موجودًا في مجال ما، بشكل افتراضي لا الخوادم موجودة في منطقة الإنترانت.وقد تم ذلك لمنع هجمات هجرة المنطقة.

لتغيير ذلك، انتقل إلى "الأدوات/خيارات الإنترنت"، وعلامة التبويب "الأمان"، ثم انقر فوق "إنترانت محلية".يمكنك بعد ذلك إضافة الخوادم التي يجب التعامل معها على أنها إنترانت يدويًا، عن طريق النقر فوق الزر "مواقع"، ثم "خيارات متقدمة"، أو إخبار IE بعدم اكتشاف شبكة الإنترانت الخاصة بك تلقائيًا وتحديد مربعات الاختيار الأخرى حسب الاقتضاء.

لقد واجهت للتو المشكلة المعاكسة - تتم مصادقة موقعي خارجيًا ولكن ليس محليًا.

لقد قارنته بالمواقع التي نعمل بها وكان الفرق هو أن الموقع الذي فشل في المصادقة كان يستخدم مصادقة Windows.

ومع ذلك، فإن المواقع الأخرى التي أعمل معها (هذا خادم مطور) تميل إلى الحصول على مصادقة أساسية.

لست متأكدًا من السبب بالضبط ولكن هذا أصلح الأمر.

ومع ذلك، في نفس الوقت لاحظت إعدادات "المجال الافتراضي" و"المجال".

أعلم أنه من غير المحتمل جدًا ولكن هل يمكن أن يساعد ذلك على الإطلاق؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top