سؤال

أنا أعمل على موقع حيث يمكن للمستخدمين تسجيل الدخول للحصول على مزيد من المعلومات الخاصة.لدى عميلي موقع آخر يستخدمه مصادقة NT للوصول إليه.

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

هل من الممكن أن تفعل هذا؟وكيف يمكنني تحقيق ذلك؟هل هناك طريقة أفضل للقيام بذلك؟

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

المحلول

إليك نظرية (لم يتم اختبارها)، وستعتمد تفاصيلها بشكل كبير على أنواع المصادقة التي سيقبلها موقع Sharepoint.سوف أتعامل أساسي, ، لأنه الأسهل.

ستكتب بعض جافا سكريبت الذي يستخدم XMLHttpRequest لإرسال طلب إلى موقع Sharepoint، وإضافة اسم المستخدم وكلمة المرور إلى رؤوس الطلب.سيقوم متصفحهم بتشغيل JavaScript، وسيتم تسجيل الدخول إلى موقع Sharepoint.

الآن، عند النقر فوق الارتباط، يجب أن يحتوي متصفح العميل على بيانات الاعتماد المخزنة مؤقتًا لإرسالها إلى موقع Sharepoint.

القضايا المحتملة:

  • لا يسمح XMLHttpRequest بالمصادقة عبر النطاق
  • لا يشارك المتصفح وXHR معلومات المصادقة
  • لا يمكن لـ Sharepoint وXHR الاتفاق على طريقة المصادقة

هناك خيار آخر يتمثل في إنشاء وكيل للاتصال بـ Sharepoint، والذي يسمح لك بتسجيل الدخول من جانب الخادم (تجاوز قيود XHR وأمان المتصفح) - ولكنه يتطلب التحميل على الخادم الخاص بك وربما بعض مشكلات هدف URL.

نصائح أخرى

كيف سيقوم الموقع الآخر بالتحقق من صحة اسم المستخدم وكلمة المرور الخاصة بك؟

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

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

ينهار كل هذا إذا كان الموقع الثاني يستخدم بالفعل حسابات Windows لأي شيء آخر غير مجرد استرداد اسم المستخدم (على سبيل المثال، الأذونات على الملف الأساسي)، نظرًا لعدم قيام المستخدم بتسجيل الدخول كحساب مستخدم Windows الفعلي في هذا السيناريو.

إذا كنت بحاجة إلى المصادقة على الموقع الثاني، فقد تحتاج إلى إنشاء سلسلة رسائل جديدة واستدعاء Windows LogonUser API.بمجرد حصولك على رمز الأمان، قم بتعيينه لسلسلة الرسائل الجديدة وقم بإجراء الاتصال عبر سلسلة المحادثات تلك.

يتطلب LogonUser امتيازات محسّنة، وهو ليس تعليمة برمجية مُدارة، لذلك هناك بعض العوائق الشديدة في استخدامه.ولكن كان هذا هو العمل الوحيد الذي تمكنت من العثور عليه للحصول على موقع مصادق عليه من النماذج يتحدث إلى خدمة/موقع Windows Authenticated Service.

أتمنى أن يساعدك هذا.

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

لن يتمكن المستخدمون لديك من الاتصال بموقع NTLM مباشرة دون الحصول على اختبار NTLM.سأكتب ما يمكن أن يكون وكيلاً فعالاً لموقع NTLM؛على سبيل المثال، سيحتوي الكود الموجود على جانب الخادم على بيانات اعتماد للاتصال بموقع NTLM، ويمر عبر الطلبات المقدمة من المستخدمين.

كما ذكرت أنه SharePoint (يبصقون) ضع في اعتبارك أن SharePoint يحتوي على مجموعة من خدمات الويب التي يمكنك استخدامها لهذا الغرض (بدلاً من إجراء تجريف الشاشة).

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