मैं एक परियोजना के लिए एक RESTful API निर्माण कर रहा हूँ मैं पर काम कर रहा हूँ और मैं मुख्य आवेदन करना चाहते हैं के साथ अपनी खुद की एपीआई उपभोक्ता बारे में एपीआई का उपभोग है क्योंकि:प्रश्न OAuth
- यह परिणाम होगा कोड का एक सेट बनाए रखने के लिए
- हम एपीआई 3 पार्टी devs के लिए यह पहले से ही किया जाएगा बेनकाब करने का निर्णय लेते होने में
- यह मोबाइल अनुप्रयोगों है कि यह उपभोग
- मैं वास्तव में सीखना चाहते हैं बनाने के लिए संभावना को खोलता है यह कैसे करें
एपीआई एक सबडोमेन https://api.example.com
पर होस्ट किया जाएगा और मुख्य वेब एप्लिकेशन रूट डोमेन https://example.com
पर होस्ट किया जाएगा।
संकल्पनात्मक रूप से मैं समझता हूं कि सब कुछ कैसे काम करता है, लेकिन मेरा मुख्य प्रश्न यह है कि प्रमाणीकरण प्रवाह कैसे बदल जाएगा। आमतौर पर 3 पार्टी क्षुधा होगा:
- से
https://api.example.com/request_token
- एक अनुरोध टोकन उपयोगकर्ता
https://api.authenticate.com/authorize
- पर प्रमाणित करने के लिए वापस 3 पार्टी आवेदन
- पर पुनः निर्देशित हो जाओ
https://api.example.com/access_token
से पहुंच टोकन प्राप्त प्राप्त पुन: निर्देशित
चूंकि मैं दोनों डोमेन नियंत्रित करता हूं, क्या मैं कुछ ऐसा कर सकता हूं:
- एक अनुरोध टोकन प्राप्त जब उपयोगकर्ता कि
https://api.example.com/authorize
- रूप में एक ही कोड कॉल
https://www.example.com
परhttps://www.example.com
- उपयोगकर्ता एक फ़ॉर्म का उपयोग करके प्रमाणित करता है पर लॉग इन स्क्रीन पर भूमि क्रेडेंशियल्स मान्य हैं, तो अनुरोध टोकन बदली है पहुँच टोकन के लिए
- पहुँच टोकन सत्र में बचाया और समाप्त हो रहा है जब उपयोगकर्ता इसे तरह लॉग आउट है आमतौर पर करते हैं
चरण 3 महसूस करता यह गलत है के बाद से वहाँ duplica किया जाएगा टी कोड, लेकिन क्या यह मुझे एक्सएसएस हमलों तक नहीं खोल पाएगा https://www.example.com
पर लॉगिन फॉर्म https://api.example.com
पर डेटा भेजा गया है क्योंकि वे तकनीकी रूप से विभिन्न डोमेन हैं?
क्या मैं इसे अधिक जटिल बना रहा हूं?
क्या आप आइटम 3 पर विस्तृत कर सकते हैं? जब उपयोगकर्ता लॉग इन करता है तो आप एक कुकी में सत्र आईडी सहेज रहे हैं, और फिर जब आप एपीआई कॉल करते हैं, तो उसे छद्म-एक्सेस टोकन के रूप में उपयोग करते हैं, और फिर जब आप एपीआई अनुरोध प्राप्त करते हैं तो इसे देख रहे हैं? ऐसा लगता है कि यह एक सुरक्षा भेद्यता होगी ... – Steve
संक्षेप में हाँ। लेकिन यह एक भेद्यता कैसी है? वेब एप से एपीआई को कॉल करते समय मैं OAuth का उपयोग नहीं करता हूं। अगर आप लॉग इन हैं (जैसा कि कुकी को सत्यापित करके निर्धारित किया गया है) - तो एपीआई बस यूआरएल को कॉल करके सुलभ है। मैं उल्लेख करना भूल गया था कि मैं एपीआई की सेवा करता हूं: एक ही डोमेन पर वेब ऐप पर। –
मुझे लगता है कि जब तक आप सर्वर आईडी पर उपयोगकर्ता की पहचान करने के लिए सत्र आईडी पर पूरी तरह भरोसा नहीं कर रहे हैं, यह नहीं है। मैं सोच रहा था कि आप [सत्र अपहरण] (http://en.wikipedia.org/wiki/Session_hijacking) तक खुद को खोल सकते हैं, लेकिन स्कूल खत्म होने के बाद शुक्रवार है और मैं थक गया हूं। अन्य सवालों के आपके उत्तरों के आधार पर आप निश्चित रूप से एक बहुत ही जानकार फेलो हैं! आपकी सहायताके लिए धन्यवाद! – Steve