2012-06-02 28 views
5

हमारे पास एक ऐप का एंटरप्राइज़ वितरण है जिसे हम केवल हमारे संगठन में वितरित करना चाहते हैं।सार्वजनिक वेबसाइट पर ओथ का उपयोग करके आईओएस एंटरप्राइज़ वितरण को कैसे सुरक्षित किया जाए?

हमने आईपीए फ़ाइल और प्लिस्ट बनाया है जो सही जगहों पर इंगित करता है, और यूआरएल के साथ एचटीएमएल पेज बनाया है: itms-services: //? Action = डाउनलोड & url = {हमारे plist से लिंक}।

हमारी समस्या हालांकि वितरण प्रक्रिया को सुरक्षित कर रही है। हम अपने कर्मचारियों को कंपनी के स्वामित्व वाले आईपैड के साथ चाहते हैं कि वे चलते समय ऐप डाउनलोड कर सकें (वे अत्यधिक मोबाइल हैं)। इसलिए हम प्लिस्ट और ऐप को सार्वजनिक वेबसाइट पर रखना चाहते हैं जिसके लिए ओथ सेवा के माध्यम से लॉगिन की आवश्यकता है।

हमारी समस्या यह है कि यदि हमें ऐप और प्लेस्ट के लिए यूआरएल पर प्रमाणीकरण की आवश्यकता है, तो itms-services: // url अब काम नहीं करता है। क्या होता है कि उपयोगकर्ता इसे एम्स-सेवा लिंक पर क्लिक करता है, और हम डिवाइस पर "होस्ट {linkname} से कनेक्ट नहीं हो सकते हैं) के बाद प्लेस्ट (जिसे लॉगिन करने के लिए रीडायरेक्ट किया जाता है) के लिए एक अनधिकृत अनुरोध दिखाई देता है।

फिलहाल, मैं यह काम देख सकने का एकमात्र तरीका यह है कि यदि आईपीए और प्लेस्ट फ़ाइलों को प्रमाणीकरण के लिए चेक नहीं किया गया है। इसका मतलब है (मुझे विश्वास है) कि हमारी plist फ़ाइल में हमारे यूआरएल का अनुमान लगाते हुए कोई भी अपना खुद का इनाम-सेवा लिंक बना सकता है और प्राधिकरण के बिना ऐप डाउनलोड कर सकता है और प्रभावी रूप से हमें अपने कर्मचारियों को वितरित करने के लिए ऐप्पल के साथ हमारे समझौते का उल्लंघन करने का कारण बनता है।

मेरा प्रश्न इसलिए है - मैं एक आईटीएम-लिंक लिंक कैसे बना सकता हूं जो आईपीए और प्लेस्ट फ़ाइलों को जनता के सामने नहीं दिखाता है? यदि यह प्रासंगिक है, तो वेबसाइट नोडजेज़ का उपयोग करके बनाई गई है और ऐप एक फोनगैप ऐप है।

उत्तर

7

मैंने इसका समाधान निकाला है।

हम ओथ प्रमाणीकरण का उपयोग नहीं कर सकते क्योंकि आईओएस इंस्टॉल प्रक्रिया प्रमाण-पत्र दर्ज करने का अवसर नहीं देती है।

इसके बजाए, जब उपयोगकर्ता उस पृष्ठ का अनुरोध करता है जिसे हम थीम-सेवाएं: // लिंक प्रदर्शित करते हैं, तो हम उस उपयोगकर्ता को एक अनन्य स्ट्रिंग बनाते हैं और इसे एईएस -256 का उपयोग करके एन्क्रिप्ट करते हैं, फिर उसे डेटाबेस में संग्रहीत करें।

हमारा यूआरएल तब बन जाता है: itms-services://{url to plist}/{encryptedString}। हमने एक क्वेरी स्ट्रिंग का उपयोग करने का प्रयास किया, लेकिन ऐसा लगता है कि आईओएस इंस्टॉल उपकरण उस पर पास नहीं होता है।

जब इंस्टॉल उपकरण प्लिस्ट का अनुरोध करता है, तो हम डेटाबेस के खिलाफ एन्क्रिप्टेड स्ट्रिंग को सत्यापित करते हैं, प्लिस्ट खोलते हैं और यूआरएल फ़ाइल में यूआरएल को {url to ipa}/{encryptedString} पर फिर से लिखते हैं।

ऐसा लगता है कि यह काफी अच्छा काम करता है। इस समय एकमात्र मुद्दा मैं सोच सकता हूं कि यूआरएल सार्वजनिक रूप से किसी ऐसे व्यक्ति के साथ वैध उपयोगकर्ता हो सकता है जिसके पास पहुंच नहीं होनी चाहिए। मुझे लगता है कि यूआरएल समय संवेदनशील है (उदाहरण के लिए केवल 5 मिनट के लिए उपलब्ध) सुनिश्चित करके हम इसके आसपास हो सकते हैं।

अंत में, सही एन्क्रिप्टेड स्ट्रिंग के बिना प्लेस्ट या आईपीए के लिए कोई भी अनुरोध अस्वीकार कर दिया जाता है।

मुझे उम्मीद है कि यह किसी के लिए उपयोगी है!

+3

तो ऐसा लगता है .. लगभग एक समाधान। मुझे लगता है कि यह इम्स-सर्विसेज: // प्रोटोकॉल के साथ एक गंभीर मुद्दा है। यह निश्चित रूप से प्रमाणीकरण का समर्थन करना चाहिए। – xdumaine