2014-12-25 12 views
6

आरईएसटी वसंत बूट में उपयोगकर्ताओं के प्रमाणीकरण और प्रमाणीकरण के लिए सबसे अच्छा अभ्यास क्या है?स्प्रिंग बूट रीस्ट टोकन प्रमाणीकरण और प्रमाणीकरण सर्वोत्तम प्रथाओं

मैं मोबाइल के लिए मानक पृष्ठों + रीस्ट एपीआई के साथ वेब ऐप बना रहा हूं। मैंने वसंत सुरक्षा के बारे में कई लेखों को देखा और मूल रूप से उनमें से अधिकतर किसी प्रकार के फिटलर दृष्टिकोण के साथ जाते हैं जो आरईएसटी कॉल को अनुमति या ब्लॉक करेगा। मेरे मामले में, हालांकि, मेरे पास कुछ लेखक तर्क है कि उपयोगकर्ता कौन है। उदाहरण के लिए, /update API है जो उपयोगकर्ता की जानकारी अपडेट करता है, और उपयोगकर्ता स्वयं को अपडेट कर सकता है, लेकिन अन्य व्यक्ति को अपडेट नहीं कर सकता है।

  • उपयोगकर्ता प्रमाणन API कॉल और
  • प्रणाली, लघु जीवन टोकन जेनरेट करता बचाता है यह डेटाबेस है में नाम/पासवर्ड या कुकी पारित: शुरू में मैं अगले प्रमाणन स्कीमा का उपयोग करने के बारे में सोचा।
  • उपयोगकर्ता को यह टोकन मिलता है, उसकी कुकी अपडेट करता है (इसलिए वेब एप्लिकेशन में जेएस इसे पढ़ और उपयोग कर सकता है)
  • जब आरईएसटी कॉल कुकीज़ को पारित किया जा रहा है। नियंत्रक पर, टोकन निकाला जाता है, समाप्ति के लिए चेक किया जाता है, टोकन को सत्यापित करने और उपयोगकर्ता आईडी प्राप्त करने के लिए डेटाबेस को क्वेरी किया जाता है।
  • उपयोगकर्ता आईडी के आधार पर, आरईएसटी को अनुमति या अवरुद्ध किया जाएगा।

क्या यह लागू करने का सही दृष्टिकोण है? वसंत बूट सुरक्षा के बारे में लेख पढ़ने के बाद मेरे सिर में एक बहुत बड़ी गड़बड़ है। कम से कम: सत्र ऑथ मेरे लिए काम नहीं करेगा (REST स्टेटलेस है)। मैं वहां लॉगिन/पासवर्ड संग्रहीत किए बिना मोबाइल डिवाइस के लिए ऑथ बनाना चाहता हूं।

क्या यह आरईएसटी शरीर में ही इस टोकन को पारित करने के लिए समझ में आता है? जीईटी विधि के मामले में क्या?

आपके ज्ञान को साझा करने के लिए बहुत धन्यवाद।

+0

बस उत्सुक है, लेकिन आप क्या सोचते हैं लाभ टोकन राज्य प्रमाणीकरण राज्य में एक डेटाबेस में संग्रहीत में संग्रहित की है सत्र (जो ज्यादा के साथ जब से तुम सब पर दृढ़ता से निपटने के लिए की जरूरत नहीं है काम करने के लिए आसान है)? –

+0

बाकी स्टेटलेस है। कोई सत्र नहीं है और दूसरा: दोनों मामलों में (सत्र के साथ भी), आपको कहीं सत्र सत्रों को स्टोर करने की आवश्यकता होगी। कुछ रेडिस का उपयोग करते हैं, मैं दृढ़ता चाहता हूं। – Tigran

+0

सुरक्षा की जरूरत है राज्य। और टीसीपी राज्यपूर्ण है। तो यदि आप उनमें से किसी एक का उपयोग करना चाहते हैं तो आप स्टेटलेस नहीं होंगे। यह stackoverflow पर टिप्पणी में करने के लिए एक व्यर्थ चर्चा है, लेकिन मुझे लगता है कि आप चाहिए अपनी प्राथमिकताएं फिर से मूल्यांकन (या फिर से परिभाषित "स्टेटलेस")। –

उत्तर

3

क्या आपको अपनी समस्या का समाधान मिला?

मैंने इस समस्या का उत्तर कहीं और दिया है, यदि आप सुनिश्चित हैं कि आप भविष्य में अन्य डेवलपर्स/ग्राहकों को एपीआई खोलना नहीं चाहते हैं (यदि आप करते हैं तो आपको ओएथ को देखना चाहिए) तो एक साधारण टोकन आधारित समाधान काम करेगा।

  • सेटअप एक मानक HTML प्रवेश पृष्ठ, कि तुम
  • सेटअप वसंत सुरक्षा एप्लिकेशन को उपयोगकर्ता लॉगिन के लिए उपयोग कर सकते हैं एक साथ sucessful लॉगिन पर एक कुकी वापस जाने के लिए: मूल रूप से इस की तर्ज पर

    कुछ प्रमाणीकरण टोकन

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

यह दृष्टिकोण Google द्वारा यहां सुझाया गया है: (संपादित करें: Google ने उस पृष्ठ को बदल दिया है जिसे मैंने मूल रूप से Google+ साइन इन और OAuth2 का उपयोग करने के बारे में पढ़ा है।

Overview of the approach using Spring security

The code & details

हालांकि यह था: - 0 मैं अपने सामान्य मोबाइल/एपीआई डॉक्स so here it is in the web archive :))

मैं भी यहां मेरे कार्यान्वयन लिखा है के लिए एक लिंक नहीं देख सकते हैं वास्तव में केवल एक प्रयोग/अवधारणा का सबूत, यह आपकी सोच में उपयोगी हो सकता है।

+2

बाकी कुकीज़ का उपयोग कर नहीं होना चाहिए। यह स्टेटलेस है। इसके बजाय टोकन प्राधिकरण के लिए जाओ। –

0

कुकी दृष्टिकोण उपयोग के मामले के लिए एकदम सही लगता है। टोकन उपयोगकर्ता आईडी के साथ बंधे जा सकते हैं। फ़िल्टर कुकी निकाल सकते हैं और एपीआई के लिए हेडर के रूप में उदाहरण के लिए प्रयोक्ता आईडी पास - कि प्राप्त का ध्यान रखना चाहिए ...

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