2015-10-12 8 views
9

का उपयोग मैं इस पोस्ट पढ़ लिया है और एडब्ल्यूएस How do I use a Cognito token with API? पर जवाब और यह एक how to use AWS cognito with custom authentication to create temporary s3 upload security tokenमैं cognito का उपयोग कैसे करूँ विशुद्ध रूप से प्रमाणित करने के लिए S3 के लिए उपयोगकर्ताओं

मैं अभी तक स्पष्ट नहीं कर रहा हूँ वहाँ S3 हासिल करने के लिए एक सरल समाधान है कि क्या पहुंच।

मेरे पास एक मोबाइल क्लाइंट और node.js बैकएंड है। ग्राहक बैकएंड के साथ प्रमाणित करता है और मेरे बैकएंड को और कॉल के लिए एक jwt accesstoken प्राप्त करता है। अपने स्वयं के बैकएंड के साथ संचार के अलावा, उपयोगकर्ताओं को एस 3 से और फ़ाइलों को अपलोड और डाउनलोड करने में सक्षम होना चाहिए। मैं यह सुनिश्चित करने के लिए सबसे सरल समाधान की तलाश में हूं कि केवल मेरे उपयोगकर्ता जो मेरे बैकएंड के लिए वैध accesstoken है S3 पर अपलोड कर सकते हैं।

मैं कर सकता हूँ निम्नलिखित (यह इस ब्लॉग पोस्ट पर आधारित है http://blog.backspace.academy/2015/03/using-cognito-with-nodejs-part-2.html):

  1. ग्राहक अपने कस्टम के साथ प्रमाणित करता है बैकएंड Node.js और कस्टम मेरी बैकएंड
  2. मेरे Node.js बैकएंड से accesstoken प्राप्त CognitoID AWS temp उपयोगकर्ता प्रमाण-पत्र प्राप्त करता है। हालांकि, एडब्ल्यूएस दस्तावेज का कहना है कि हमें सत्र टोकन की भी आवश्यकता है (संभावित रूप से कॉग्निटोसिंक को कॉल करके), इसलिए मैं सत्र टोकन प्राप्त करने के लिए अपनी समर्थित आवश्यकताओं को भी मानता हूं।
  3. मेरा node.js बैकएंड क्लाइंट
  4. क्लाइंट के लिए उन temp क्रेडेंशियल प्लस सत्र टोकन को पास करता है क्लाइंट इन्हें क्रेडेंशियल्स + सत्र टोकन में गुजरने वाले एडब्ल्यूएस एसडीके के साथ S3 पर कॉल के लिए उपयोग करता है।

क्या मुझे कुछ याद आ रही है? क्या ऐसा करने का कोई आसान तरीका है? मुझे लगता है कि क्लाइंट को अपने स्वयं के कस्टम node.js उपयोगकर्ता को एडब्ल्यूएस/एस 3/कॉग्निटो से accesstoken पास करने का कोई तरीका नहीं है और S3/Cognito टोकन को अपने स्वयं के node.js एपीआई को कॉल करके प्रमाणित करता है जो इस टोकन को प्रमाणित कर सकता है।

उत्तर

4

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

यदि आप उपयोगकर्ता को अपने बैकएंड के साथ प्रमाणित करना चाहते हैं (अपने बैकएंड के साथ उपयोगकर्ता नाम/पासवर्ड का उपयोग करके) आप Amazon Cognito's Developer Authenticated Identities feature का उपयोग कर सकते हैं। यदि आपके उपयोगकर्ता फेसबुक के साथ प्रमाणीकरण करेंगे, तो आप the Facebook Integration topic में वर्णित अनुसार अमेज़ॅन कॉग्निटो को फेसबुक एक्सेस टोकन पास कर सकते हैं।

किसी भी तरह से, एडब्लूएस दस्तावेज में आप "मानक" प्रवाह देखेंगे कि आप अमेज़ॅन कॉग्निटो को एडब्ल्यूएस सत्र प्रमाण-पत्र सीधे मोबाइल ऐप (आपके बैकएंड के माध्यम से) देने के लिए देते हैं। डेवलपर प्रमाणीकृत पहचानों का उपयोग करते समय, मोबाइल ऐप ओपनआईडी कनेक्ट टोकन का आदान-प्रदान करता है (कॉग्निटो के GetOpenIdTokenForDeveloperIdentity call से आपके बैकएंड द्वारा पुनर्प्राप्त किया गया है और प्रमाणीकरण अनुरोध के जवाब में मोबाइल ऐप पर पहुंचाया गया है) को कॉग्निटो के GetCredentialsForIdentity पर कॉल करने के लिए। फेसबुक का उपयोग करते समय, आप ओपनआईडी टोकन के बजाय फेसबुक एक्सेस टोकन में बस जा सकते हैं। किसी भी तरह से, इस प्रवाह का उपयोग करके, आप Getting Credentials topic में आईओएस, एंड्रॉइड, जावास्क्रिप्ट, एकता, और ज़ैमरिन के लिए दिखाए गए ऐप में एडब्ल्यूएस क्रेडेंशियल प्राप्त करने के लिए "मानक" कॉग्निटो का उपयोग करने में सक्षम होंगे।

इसके साथ, आप वास्तव में उपयोगकर्ता की तरफ से एडब्ल्यूएस प्रमाण पत्र प्राप्त कर सकते हैं और उन्हें ग्राहक को धक्का दे सकते हैं, लेकिन केवल ध्यान रखें कि सभी एडब्ल्यूएस मोबाइल एसडीके उदाहरणों का मानना ​​है कि आप इसका उपयोग कर रहे हैं Cognito जैसा कि ऊपर Getting Credentials topic में दिखाया गया है, तो आपको इसे ध्यान में रखना होगा।आप अपने खुद के बैकएंड के माध्यम से साख मार्ग का एक उदाहरण देख चाहते हैं, एपीआई गेटवे को सुरक्षित पालतु जानवरों की दुकान नमूना (backend code, client code)

+0

स्कॉट, धन्यवाद, यह बहुत उपयोगी है। वास्तव में मेरे प्रोजेक्ट में वास्तव में क्या होता है कि उपयोगकर्ता (i) एफबी के माध्यम से पंजीकरण करते हैं, और फिर मेरे कस्टम अस्थायी और कस्टम रीफ्रेशेटेन को पारित कर दिया जाता है, (ii) उसके बाद कभी भी एफबी के माध्यम से लॉगिन नहीं होता है, लेकिन एक नया accesstoken प्राप्त करने के लिए refreshtoken का उपयोग करें - अगर वे ऐप को लॉगआउट या हटाते हैं और पुनः इंस्टॉल करते हैं। इसका मतलब है, केवल कॉग्निटो को एफबी को पारित करना एक विकल्प नहीं है। इसलिए, मैं अपने बैकएंड के माध्यम से GetOpenIdTokenForDeveloperIdentity को कॉल करता हूं और मोबाइल क्लाइंट को ओपनआईडी कनेक्ट टोकन वितरित करता हूं जो उसके बाद GetCredentialsForIdentity को कॉल करता है। सही है, है ना? – user753416

+0

@ user753416 एफबी टोकन को फिर से ताज़ा करने में सक्षम नहीं होने के मामले में (क्योंकि उपयोगकर्ता एफबी के साथ फिर से लिख नहीं सकता है), आपके द्वारा वर्णित वर्कफ़्लो सही लगता है। यदि आप किसी और चीज में भाग लेते हैं तो SO पर एक और प्रश्न पोस्ट करने के लिए स्वतंत्र महसूस करें और हमें सहायता करने में खुशी होगी। –

2

मैं आप संदर्भित कर रहे बैकस्पेस अकादमी से NodeJS और Cordova cognito ट्यूटोरियल लिखा देखते हैं। ट्यूटोरियल को उस समय डिजाइन किया गया था ताकि कॉग्निटो को लागू करने पर बहुत आवश्यक मार्गदर्शन दिया जा सके। इसके बावजूद, कॉग्निटो हमेशा सबसे उपयुक्त समाधान नहीं है (केआईएसएस सिद्धांत)। मुझे लगता है कि आप अपने समाधान उलझी से अधिक हो सकता है:

  1. आप cognito की जरूरत नहीं है सुरक्षित रूप से ब्राउज़र या सर्वर से S3 उपयोग करने के लिए। एक संघीय उपयोगकर्ता (ओथ/फेसबुक) ब्राउज़र से या अपने नोडजेएस ऐप से सीधे S3 तक पहुंच सकता है।
  2. यदि आपको कॉग्निटो कुंजी मान डेटा स्टोर की आवश्यकता नहीं है तो ब्राउज़र पक्ष पर फ़ेडरेटेड उपयोगकर्ता का उपयोग करें। क्या एक नोडजेएस सर्वर वास्तव में आवश्यक है?
  3. यदि आप क्लाइंट से सब कुछ कर सकते हैं तो आपको NodeJs सर्वर की आवश्यकता नहीं है।

मैं सुझाव दूंगा कि आप एक संघीय उपयोगकर्ता के साथ ग्राहक पक्ष पर सब कुछ करने पर विचार करें। यह "ब्राउज़र में वेब पहचान संघ को कॉन्फ़िगर करने" के तहत एडब्ल्यूएस ब्राउज़र एसडीके दस्तावेज़ों में विस्तृत है।

सावधानी! सर्वर कोड सहित, अपने कोड में अपने स्वयं के अधिकारियों को कभी न दें। हमेशा ब्राउज़र पक्ष पर फ़ेडरेटेड उपयोगकर्ता (ओथ) का उपयोग करें और सर्वर पक्ष पर अपने वीपीसी पर एस 3 एंडपॉइंट से कनेक्ट करने के लिए अपने ईसी 2 इंस्टेंस के लिए आईएएम भूमिका बनाएं। कुछ बेवकूफ कारणों के लिए एडब्ल्यूएस एस 3 ब्राउज़र उदाहरण हार्ड कोड प्रमाण-पत्र।

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