سؤال

هل هناك طريقة باستخدام Java to Over-ride مربع الحوار مصادقة المتصفح عند استلام رسالة 401 من خادم الويب؟ أريد أن أعرف متى يتم عرض مربع الحوار هذا، وبدلا من ذلك يتم تقديمه للمستخدم، قمت بملء بيانات الاعتماد الخاصة بها.

نظرة عامة على التطبيق:

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

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

المحلول 2

يحتوي SWT 3.5m6 على مستمع جديد داخله مصادقة الدعوى. إنه يستمع ببساطة عن حدث المصادقة المرت من الخادم ويتم إطلاقه. الرمز أدناه هو ما يؤدي السلوك الذي أردت. ينتظر المصادقة، وإذا كان المضيف هو تطبيقي، فإنه يمر ببيانات الاعتماد. بالطبع ملء user_name وكلمة المرور و Host_name مع المتغيرات المناسبة. وإلا فإنه يتيح وجود مربع حوار مصادقة المتصفح ويجعل المستخدم يدخل بيانات الاعتماد. يمكن أيضا العثور على هذا الرمز في صفحة Eclipse SWT Slippets:

WebBrowser.addauthenticationlistener (جديد المصادقة المستقيم ()

{

        public void authenticate(AuthenticationEvent event) {
            try {
                URL url = new URL(event.location);

                if (url.getHost().equals(HOST_NAME)) 
                {
                    event.user = USER_NAME;
                    event.password = PASSWORD;
                } 
                else 
                {       
                    /* do nothing, let default prompter run */
                }
            } catch (MalformedURLException e) {
                /* should not happen, let default prompter run */
            }
        }
    });

نصائح أخرى

إذا كنت لا تهتم بكلمة المرور التي توضح، فيمكنك إنشاء عنوان URL لذلك يمر بيانات الاعتماد السابقة. http: // اسم المستخدم: password@ww.example.com هذا سوف يمر مربع المصادقة ولكنه سيظهر المستخدم أوراق الاعتماد، لذلك قد لا يكون أيضا ما تبحث عنه.

سؤالك غير واضح بعض الشيء. تعتمد المصادقة الأساسية بأكملها على رؤوس HTTP.

إذا حصل المتصفح على رأس تفويض مما يعرض الحوار. يتم بعد ذلك إرسال المحتوى من مربع الحوار مرة أخرى إلى الخادم. لا يوجد شيء خاص حول هذا الموضوع. ISER اسم المستخدم: كلمة المرور في Base64 المشفرة. القي نظرة على

ويكيبيديا

المشكلة هي الطريقة التي تريد التدخل فيها. يجب عليك التقاط رأس التفويض، ثم إلى الطلب التالي، يجب عليك تغيير رأس HTTP لتضمين بيانات الاعتماد.

امل ان يساعد

أعتقد أن هذا سلوك يعتمد في معظمها على المتصفح وما تقارير الخادم إلى المتصفح.

على سبيل المثال، يقوم Internet Explorer، كونه منتج Microsoft، يدعم مباشرة إرسال بيانات اعتماد Windows التلقائية (يمكنك تعديل هذا السلوك في إعدادات الإنترنت الخاصة بك) بعد فشل طلب مجهول في 401.

فايرفوكس، على سبيل المثال، لا يدفع المستخدم دائما حتى لو تم تعيينه لتذكر المعرف وكلمة المرور عبر إدارة كلمة المرور. IE سيعرف أيضا إذا فشل تسجيل الدخول التلقائي (مثل بيانات اعتماد Windows الخاصة بك، لا تزال قائمة 401 لأنك لا يسمح بالمعرف).

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

إذا كنت ترغب في التحكم في ما يتم عرضه للمستخدم للمصادقة، فيمكنك تغيير طريقة المصادقة في قسم Confign-Config في Web.xml من الأساسي إلى النموذج.

ثم يمكنك تحديد الصفحة التي يجب عرضها عند مصادقة المستخدم، و، وأفترض أن بيانات الاعتماد الخاصة بها مسبقا لها ... ولكن لا تهزم هذا الغرض بأكمله الأمان؟

إعداد مصادقة لتطبيقات الويب

تحرير بعد مزيد من التفاصيل:

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

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