2011-05-04 5 views
6

मेरे पास एक वेबसाइट पर एक हस्ताक्षरित एप्लेट है। इस वजह से, जावा सुरक्षा संवाद प्रकट होता है, और उपयोगकर्ता को यह काम करने से पहले एप्लेट को अनुमति देने की आवश्यकता होती है।क्या मैं जांच सकता हूं कि जावा एप्लेट प्रमाणपत्र मेरे एप्लेट चलाने से पहले भरोसा है या नहीं?

  • मैं वेबसाइट उपयोगकर्ता को सुरक्षा संवाद बॉक्स की व्याख्या करने से पहले यह ऊपर आता हैं: मुझे क्या करना चाहते हैं यह है। पृष्ठ एक div, में कुछ स्पष्टीकरण टेक्स्ट दिखाएगा और कुछ सेकंड के बाद, सुरक्षा संवाद दिखाई देगा।
  • यदि उपयोगकर्ता पहले से ही पिछले सत्र में प्रमाणपत्र की अनुमति देता है, तो उसे किसी भी अतिरिक्त संवाद के बिना एप्लेट चलाएं।

समस्या यह है कि पृष्ठ में एप्लेट एम्बेडेड होने पर सुरक्षा संवाद प्रकट होता है। मैं एम्बेडिंग में देरी कर सकता हूं, लेकिन एप्लेट से इसकी अनुमतियों को जांचने का कोई तरीका नहीं है, क्योंकि इसे लोड होने से पहले इसे करने की ज़रूरत है।

शायद मैं एक दूसरा, सामान्य एप्लेट लोड कर सकता हूं जो अदृश्यता से चलता है, और अनुमतियों की जांच करता है। लेकिन मैं ऐसा करने के बारे में कैसे जाऊं? क्या कोई जावा क्लास है जो जांच कर सकती है कि ग्राहक द्वारा प्रमाण पत्र पर भरोसा किया गया है या नहीं?

धन्यवाद।

+0

जैसा कि मुझे पता है, जावा सुरक्षा संवाद केवल पहले एप्लेट लॉन्च में दिखाई देता है। और यदि उपयोगकर्ता हमेशा प्रमाण पत्र पर भरोसा करने के लिए बॉक्स को चेक करता है - सुरक्षा संवाद फिर से प्रकट नहीं होता है। लेकिन यदि उपयोगकर्ता इसे भरोसा करना चुनता है तो एक बार - यह अगले लॉन्च पर दिखाई देता है। और आप इसे सुरक्षा कारणों से प्रोग्रामेटिक रूप से नहीं रोक सकते हैं। – MockerTim

उत्तर

0

आप जेएआर फ़ाइल प्रोग्रामेटिक रूप से प्रमाणपत्र और हस्ताक्षर की जांच कर सकते हैं, जैसे कि जेपीएम एप्लेट लोड करते समय होगा। यह आसान हो रहा है नहीं करने वाला है, लेकिन कम से कम पहली नजर में, यदि आप ऐसा करने के लिए जा रहे हैं:

  1. होगा एप्लेट दर्शक की तरह, अपने जार डाउनलोड करने और अपने प्रमाण पत्र सत्यापित करने के लिए एक छिपा एप्लेट का प्रयोग करें। आप इसे java.security.cert पैकेज का उपयोग करके मैन्युअल रूप से कर सकते हैं। यह पता लगाने का सबसे अच्छा तरीका यह है कि JarSigner source code, विशेष रूप से verifyJar() था। की तरह कुछ:

    // download the JAR 
    URL url = new URL("jar:http://mywebsite.com/myjar.jar!/"); 
    JarURLConnection jarConnection = (JarURLConnection)url.openConnection(); 
    // get the certificates and other security stuff 
    CodeSigners[] codeSigners = jarConnection.getJarEntry().getCodeSigners(); 
    Certificate[] certificates = jarConnection.getJarEntry().getCertificates(); 
    // verify the signatures 
    // don't know the code, but you can analyze JarSigner example at http://download.oracle.com/javase/tutorial/security/toolfilex/rstep2.html 
    
  2. उपयोग LiveConnect (? शायद कुछ और) एक कुकी सेट करने के लिए तो आप जानते हैं "उपयोगकर्ता पहले से ही पिछले सत्र में प्रमाण पत्र के लिए अनुमति दी है, तो"।

  3. (2) में बनाए गए कुकीज़ में (1) स्टोर के परिणामों के आधार पर संभवतः अपने एप्लेट लॉन्च करें।

मैंने यह इतना सोचा नहीं है, इसलिए एक बेहतर तरीका हो सकता है। शुभकामनाएं, और वापस पोस्ट करें!

+0

मैंने सोचा था कि जारसिग्नेर का उपयोग केवल एक एप्लेट पर हस्ताक्षर करने के लिए किया जाता था? मुझे स्रोत में नहीं मिला कि अंतिम उपयोगकर्ताओं के विश्वसनीय प्रमाणपत्रों का उपयोग कैसे करें। मैं इस बात से परिचित नहीं हूं कि प्रमाण पत्र और कीस्टोर कैसे काम करते हैं, या यहां तक ​​कि वास्तव में एक कीस्टोर क्या है। जब मैंने स्वयं अपने एप्लेट पर हस्ताक्षर किए, तो मैंने अपनी विकास मशीन पर एक कीस्टोर बनाया और साइन इन करने के लिए जारसिगर चलाया। जब मैं अपनी वेबसाइट पर एप्लेट को तैनात करता हूं, तो उपयोगकर्ता अनुमति अनुरोध को स्वीकार या अस्वीकार करने का विकल्प चुनता है। क्या यह सिर्फ एक एप्लिकेशन सेटिंग है, जैसे 'मेरा पासवर्ड याद रखें' की तरह? या यह कहीं 'कीस्टोर' में संग्रहीत किया जा रहा है। – lifeformed

+0

@ ट्रेसेंस: 'जारसिग्नेर' कोड में हस्ताक्षर करने और सत्यापन करने के तरीके हैं। समारोह 'verifyJar() 'वह करता है।यदि आप कुंजीस्टोर/प्रमाण पत्र कैसे काम करते हैं, उससे परिचित नहीं हैं, तो मैं अत्यधिक [हस्ताक्षर किए गए एप्लेट्स] (http://java.sun.com/developer/onlineTraining/Programming/JDCBook/signed.html) जैसे ट्यूटोरियल की अनुशंसा करता हूं और [हस्ताक्षर सत्यापित करना ] (http://download.oracle.com/javase/tutorial/security/apisign/versig.html)। साथ ही, जब आप एक एप्लेट को तैनात करते हैं, तो स्वीकार/अस्वीकार एक एप्लिकेशन सेटिंग है, लेकिन यह JVM द्वारा संग्रहीत है, न कि आप (बिल्कुल निश्चित नहीं है)। कीस्टोर नहीं; कि केवल कुंजी रखती है, सेटिंग्स नहीं। –