2009-08-10 11 views
6

मैं एक वेब एप्लिकेशन के लिए एक आरईएसटी एपीआई पर काम कर रहा हूं कि अब तक हमने कुछ साथी अनुप्रयोगों के लिए आंतरिक रूप से विकसित किया है। अब जब हम बाहरी डेवलपर्स तक खुलने की सोच रहे हैं, तो हम एपीआई को टोकन जोड़ना चाहते हैं ताकि यह पहचानने में सहायता मिल सके कि अनुरोध कौन कर रहा है और सामान्य रूप से इसका उपयोग करने में मदद के लिए। इस बिंदु पर हम एपीआई पर उपयोगकर्ता प्रमाणीकरण के लिए https और बुनियादी प्रमाणीकरण का उपयोग कर रहे हैं।वेब एपीआई टोकन योजना के लिए अच्छा दृष्टिकोण?

टोकन योजना जिस पर हम चर्चा कर रहे हैं, वह बहुत आसान होगा जहां प्रत्येक डेवलपर को 1 या अधिक टोकन सौंपा जाएगा और इन टोकन प्रत्येक अनुरोध के साथ पैरामीटर के रूप में पारित किए जाएंगे।

मेरा सवाल यह है कि अगर आपने ऐसा कुछ किया है तो आपने ऐसा कुछ किया है (क्या आपने कम किया है, आपने सुरक्षा कैसे संभाली है, आदि) और क्या आपके पास कोई सिफारिश है?

धन्यवाद!

+0

किसी भी दिलचस्पी के लिए, मैंने ओएथ के बिना किसी सुरक्षा से सुरक्षित आरईएसटी एपीआई में जाने के बारे में एक कहानी लिखी है: http://www.thebuzzmedia.com/designing-a-secure-rest-api-without- oauth-प्रमाणीकरण/ समस्या पहचान (अद्वितीय टोकन इत्यादि) के साथ नहीं है, समस्या यह है कि हमले वाले वैक्टर और आपके उपयोगकर्ताओं का प्रतिरूपण करने वाले लोगों को बंद कर दिया गया है। HTTP पर जिसके लिए चेकसम या "एचएमएसी" की आवश्यकता होती है - अनुरोध में सभी मानों को हस्ताक्षर करने के लिए केवल एक गुप्त कुंजी के साथ क्लाइंट और सर्वर पता है। एचटीटीपीएस से अधिक, यह बहुत आसान है, एक साधारण टोकन ठीक काम करता है। –

उत्तर

6

सबसे पहले, आप http://OAuth.net पर देख सकते हैं। आपके उपयोग के आधार पर, यह आपको आवश्यक सुरक्षा प्रदान कर सकता है।

टोकन के रूप में, यह OAuth समेत अधिकांश प्रोटोकॉल में एक BLOB है। आप किसी भी प्रारूप में अपनी आवश्यक जानकारी डाल सकते हैं।

यहाँ हम क्या करते हैं,

  1. पहले हम हर डेवलपर जुड़े रहस्य के साथ एक चाबी आवंटित।
  2. टोकन स्वयं एक एन्क्रिप्टेड नाम-मूल्य जोड़े है। हमने वहां उपयोगकर्ता नाम, समाप्ति, सत्र आईडी, भूमिका आदि जैसे चीजें रखीं। यह हमारे अपने रहस्य से एन्क्रिप्ट किया गया है, इसलिए कोई और इसे नहीं बना सकता है।
  3. वेब एपीआई के साथ उपयोग में आसान के लिए, हम बेस 64 के यूआरएल-सुरक्षित संस्करण का उपयोग करते हैं, इसलिए टोकन हमेशा यूआरएल-सुरक्षित होता है।

आशा है कि मदद करता है!

2

आप शायद एक समय आधारित टोकन जोड़ने के बारे में भी सोचना चाहें जो आपको अनुरोध के समय की सीमा को सीमित करने की अनुमति देगा। इससे किसी को रीप्ले हमले करने की कोशिश करने में मदद मिलेगी।

आपके पास उपरोक्त डेवलपर के आधार पर एक वैध वैध टोकन प्राप्त करने/असाइन करने के लिए एक हैंडशेक कॉल होगा। यह टोकन स्थानीय रूप से संग्रहीत किया जाएगा और कॉलर को वापस भेज दिया जाएगा।

डेवलपर अनुरोध और डेवलपर को सत्यापित करने के अनुरोध में इस कुंजी का उपयोग करेगा।

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

1

यूयूआईडी किसी भी अस्थायी यादृच्छिक कुंजी के लिए बहुत अच्छा है जिसे आप पसंद करते हैं। अप्रत्याशित और उत्पन्न करने के लिए तेज़, टकराव के साथ इतनी संभावना नहीं है कि वे प्रभावी रूप से अद्वितीय हैं। अच्छी सत्र कुंजी भी बनाओ।

संबंधित मुद्दे