2010-02-10 22 views
10

मैं अपनी निजी परियोजना में अमेज़ॅन वेब सेवाओं का उपयोग करने के साथ खेल रहा हूं। मैंने .NET के लिए अपने एडब्ल्यूएस एसडीके को पकड़ लिया है और मैं इसका उपयोग कर रहा हूं, लेकिन मैं थोड़ा उलझन में हूं।अमेज़ॅन वेब सेवाओं के साथ एक गुप्त कुंजी रहस्य रखना

  1. वेब सेवा तक पहुंच (इस मामले, SimpleDB में है, हालांकि मुझे लगता है कि वास्तव में सवाल करने के लिए सामग्री है नहीं लगता है) एक निजी/सार्वजनिक कुंजी युग्म के माध्यम से अधिकृत है।

    AWSClientFactory.CreateAmazonSimpleDBClient(publicKey, privateKey); 
    
  2. यह एक क्लाइंट अनुप्रयोग है, इसलिए कोड ग्राहक पर पूरी तरह से चलाना होगा:

  3. एडब्ल्यूएस एसडीके नेट एक ग्राहक वस्तु बनाने के लिए इस्तेमाल एपीआई के लिए निजी कुंजी की आवश्यकता है।

  4. यह सुझाव देते हुए कि क्लाइंट को सरल डीबी तक पहुंचने के लिए मेरी निजी कुंजी तक पहुंच की आवश्यकता होगी। लेकिन अमेज़ॅन बार-बार और जोरदार रूप से बताता है कि मेरी निजी कुंजी को मेरा नियंत्रण नहीं छोड़ना चाहिए।

यह मुझे समझ में नहीं आता है, इसलिए मुझे लगता है कि मुझे कुछ याद आना चाहिए।

क्या क्लाइंट-साइड सामान्य रूप से अमेज़ॅन वेब सेवाओं के लिए गलत मॉडल है, .NET के लिए अपने एडब्ल्यूएस एसडीके का उपयोग करने के लिए, या क्या मुझे ऐसा कुछ याद आ रहा है जो क्लाइंट एप्लिकेशन को पूरी तरह से उचित बनाता है? क्या मेरे पास प्रॉक्सी सेवा बनाने के बिना इस पर काम करने का कोई अच्छा तरीका है जो ग्राहकों को प्रमाणीकृत करेगा और उनके अनुरोध को SimpleDB पर अग्रेषित करेगा?

उत्तर

7

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

इस तरह, आप अपने सर्वर से गुजरने के लिए एडब्ल्यूएस कॉल के दौरान ओवरहेड से बचते हैं, विलंबता, बैंडविड्थ, आपके सर्वर पर बंधे हुए सॉकेट, असफलता जटिलता इत्यादि की बचत करते हैं। आप बस हल्के हिट अप लेते हैं ग्राहक के लिए उचित निर्देश प्राप्त करने के लिए।

+0

मैं उत्तर की सराहना करता हूं। मैं मुख्य रूप से डेस्कटॉप दुनिया में काम करता हूं, इसलिए हस्ताक्षरित यूआरएल और हेडर प्रदान करने और प्रदान करने की संभावना कभी भी मेरे दिमाग में प्रवेश नहीं करती है। –

+0

यदि आप इस मार्ग पर जाते हैं, तो क्या कोई अभी भी .NET API का उपयोग कर सकता है? –

+1

मेरे अपने प्रश्न का उत्तर "नहीं" है - आपको AWSSDKUtils.HMACSign कॉल को दूरस्थ करने के लिए कोड को संशोधित करना होगा। –