2012-04-10 14 views
7

मैं एक सर्वर लिख रहा हूं जो ASP.NET वेब एपी टेम्पलेट का उपयोग करता है और बाकी सेवाओं को कार्यान्वित करता है। यह सर्वर मोबाइल गेम के लिए बैकएंड होगा जहां यह उपयोगकर्ताओं के हाईस्कॉर्स, प्रगति, और अन्य जानकारी को स्टोर करेगा। मैंने कई दृष्टिकोण (this, this, और this) पर एक नज़र डाली है और मुझे यह तय करने में समस्या हो रही है कि किस दृष्टिकोण का उपयोग करना है। मेरे मामले में मैं मुख्य रूप से स्कोर के धोखाधड़ी को रोकना चाहता हूं क्योंकि प्रत्येक उपयोगकर्ता खाते में सीमित जानकारी होगी (उनके ईमेल के बाहर)। यहां आदर्श रूप से क्या होगा।क्रॉस-प्लेटफ़ॉर्म मोबाइल एप्लिकेशन से REST और ASP.NET वेब एपीआई का उपयोग करके प्रमाणीकरण और प्रमाणीकरण

  1. उपयोगकर्ता पहली बार
  2. उपयोगकर्ता कस्टम उपयोगकर्ता नाम विकल्प दिया जाता है और इस सर्वर द्वारा जाँच की है तो वहाँ डुप्लिकेट नहीं कर रहे हैं
  3. उपयोगकर्ता यादृच्छिक रूप से जनरेट छह अंकों पिन नंबर (दिया जाता है के लिए ऐप्लिकेशन खुलने ताकि वे विभिन्न फोन पर उसी खाते का उपयोग कर सकते हैं)
  4. उपयोगकर्ता ईमेल पता
  5. नई उपयोगकर्ता सर्वर पर बनाई गई है में प्रवेश करती है (सर्वर पुष्टि करता है कि खाते मेरे मुवक्किल आवेदन)
  6. 0 से वैध उदाहरण द्वारा बनाया गया था
  7. उपयोगकर्ता खेलता है, परिणाम अपलोड करता है (बुनियादी प्रमाणीकरण के माध्यम से?)
  8. उपयोगकर्ता वैश्विक परिणाम (जीईटी तरीकों कि उपयोगकर्ता विशिष्ट नहीं कर रहे)

मैं मुसीबत संख्या कम प्रमाणीकरण की किस प्रकार (कोई ब्राउज़र लॉगिन स्क्रीन और हो रही है इस तरह के) और प्राधिकरण पर कोई सुरक्षा देख सकते हैं उपयोग करने के तरीके। किसी भी तरह की सहायता का स्वागत किया जाएगा।

-Tamas

+0

शायद इस मामले में मूल स्वाभाविकता पर्याप्त होगी? लेकिन मुझे अभी भी यह सुनिश्चित नहीं है कि कोई वैध ग्राहक के माध्यम से बाकी एपीआई तक पहुंच रहा है। – tamaslnagy

उत्तर

5

भले ही आप मूल प्रमाणीकरण का उपयोग कर रहे हों, आप HTTPS का उपयोग करना चाहेंगे। यदि आप HTTPS का उपयोग कर रहे हैं तो आप क्लाइंट को सत्यापित करने के लिए क्लाइंट प्रमाणपत्रों का भी उपयोग कर सकते हैं। केवल वैध प्रमाणपत्र वाले क्लाइंट को एक्सेस दिया जाएगा। यदि आप अन्य उपभोक्ताओं को इस एपीआई को नहीं खोल रहे हैं और इसका उपयोग केवल आपके द्वारा विकसित क्लाइंट द्वारा किया जाएगा, तो आप डब्ल्यूएस-सिक्योरिटी और डब्ल्यूसीएफ पर विचार करना चाहेंगे। नग्न मोटरसाइकिल ड्राइवरों का उपयोग एक रूपक here के रूप में मतभेदों का मनोरंजक वर्णन है।

+0

मैं एकाधिक भाषाओं (जावा, ओबीजे-सी, और सी #/.NET) का उपयोग करूँगा, इसलिए मुझे नहीं पता कि ws-security/wcf विधि काम करेगी या नहीं। क्लाइंट सर्टिफिकेट विधि क्रॉस-प्लेटफार्म है? – tamaslnagy

+0

यदि यह क्रॉस-प्लेटफ़ॉर्म होगा तो मैं REST के साथ चिपकने की अनुशंसा करता हूं। क्लाइंट प्रमाणपत्र क्रॉस-प्लेटफॉर्म है। –

+0

अच्छा लगता है। मैं इस पर गौर करूंगा।साथ ही, मैंने कभी नहीं समझा कि शुरुआती पंजीकरण मूल प्रमाणीकरण प्रणाली के साथ कैसे हुआ, यानी, जब उपयोगकर्ता नाम और पासवर्ड सर्वर डेटाबेस में अभी तक नहीं हैं। – tamaslnagy

1

यदि यह अलग ग्राहक/उपकरणों से है, टोकन आधारित प्रमाणीकरण की तरह कुछ आप के लिए काम कर सकते हैं।

विचार सरल है, आपके पास अपनी वेब सेवा में प्रमाणीकरण विधि है। यह विधि क्रेडेंशियल जांचने और 'टोकन' जारी करने के लिए ज़िम्मेदार है। कुछ सरल संरचना जैसे SHA1 या MD5 स्ट्रिंग जो सभी आगे क्लाइंट कॉल का उपयोग कर रहे हैं।

यदि ग्राहक प्रमाणीकृत है तो यह सत्र की पूरी अवधि के लिए टोकन स्टोर करता है। बाकी वेब सेवा विधियां, जैसे कि सेवस्कोर सिर्फ टोकन को पैरामीटर के रूप में स्वीकार कर रही हैं। फिर वे जांच करने के लिए ज़िम्मेदार है कि यह वैध है या नहीं। यदि टोकन वैध नहीं है तो कॉल परोसा नहीं जा रहा है।

+0

यदि संभव हो तो मैं टोकन-आधारित विधियों पर मूल प्रमाणीकरण पसंद करूंगा। – tamaslnagy

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