REST वेब सेवा के प्रमाणीकरण / अभिगम-नियंत्रण के लिए सॉफ्टवेयर आर्किटेक्चर


12

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

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

लेकिन मैं इन समाधानों को लागू करने वाले सॉफ़्टवेयर आर्किटेक्चर के लिए सर्वोत्तम अभ्यास और पैटर्न पर एक अच्छा पोस्ट, लेख, पुस्तक नहीं ढूंढ पाया।

विशेष रूप से:

  • उपयोगकर्ता विवरण और एक्सेस अधिकार कैसे संग्रहीत किए जाने चाहिए? (डेटा मॉडल, स्थान, प्रारूप)
  • सर्वर में इनका प्रतिनिधित्व और ट्रैकिंग के लिए अच्छे डिज़ाइन पैटर्न क्या हैं? (स्मृति में सत्र, db हर बार लुकअप आदि)
  • कोड आधार में सुरक्षित तरीके से सेवाओं के लिए इन अधिकारों को मैप करने के लिए अच्छे पैटर्न क्या हैं?
  • क्या वास्तुशिल्प विकल्प सिस्टम को अधिक सुरक्षित और विश्वसनीय रखने में मदद कर सकते हैं?
  • लोगों ने खाइयों से क्या सबक सीखा है?

मैं देख रहा हूँ किसी भी विशिष्ट प्रौद्योगिकियों के बाहर सॉफ्टवेयर वास्तुकला के लिए डिजाइन पैटर्न और सिफारिशें हैं।

(यदि प्रौद्योगिकियां मायने रखती हैं, तो मैं इसे अजगर, मुड़ और एक पोस्टग्रेजल डेटाबेस का उपयोग करके लागू करने की योजना बना रहा हूं)


लगता है जैसे आपको बस किसी को आपके लिए इसे लिखने की आवश्यकता है;)
मार्टिन ब्लोर

दुर्भाग्य से यह तरीका दिखता है। यह सिर्फ अजीब लग रहा था कि स्टैक के इस हिस्से को कहीं भी वर्णित नहीं किया गया था। यहां तक ​​कि अगर मैं कैसे newegg, Digg, या यहां तक ​​कि stackoverflow की तरह एक साइट उपयोगकर्ता क्रेडेंशियल्स और बैकएंड में उपयोग की एक राइटअप मिल सकता है, कि मदद मिलेगी।
एलन

क्या आपने इस पर कोई प्रगति की है?
ब्रायन ऐज

क्या आपने oAuth2 पर विचार किया है ? कर रहे हैं सर्वर और ग्राहक पुस्तकालयों कई लोकप्रिय भाषाओं कि यह आसान इसे लागू करने बनाना चाहिए में इसके लिए उपलब्ध।
सैम

जवाबों:


5

OpenAM।

http://forgerock.com/openam.html

उपयोगकर्ता विवरण और एक्सेस अधिकार कैसे संग्रहीत किए जाने चाहिए? (डेटा मॉडल, स्थान, प्रारूप)

पहचान प्रबंधक। किसी भी वेब सर्वर से अलग। एलडीएपी आधारित।

सर्वर में इनका प्रतिनिधित्व और ट्रैकिंग के लिए अच्छे डिज़ाइन पैटर्न क्या हैं? (स्मृति में सत्र, db हर बार लुकअप आदि)

आपके ढांचे द्वारा हल किया गया। और मत सोचो। बस अपने ढांचे के पहले से निर्मित अच्छे डिजाइन पैटर्न का उपयोग करें।

कोड आधार में सुरक्षित तरीके से सेवाओं के लिए इन अधिकारों को मैप करने के लिए अच्छे पैटर्न क्या हैं?

आपके ढांचे द्वारा हल किया गया। प्रत्येक ढांचा थोड़ा अलग दृष्टिकोण का उपयोग करता है। प्रत्येक भाषा में थोड़ी अलग विशेषताएं होती हैं। उदाहरण के लिए, Django, पायथन के सज्जाकारों का उपयोग करता है।

क्या वास्तुशिल्प विकल्प सिस्टम को अधिक सुरक्षित और विश्वसनीय रखने में मदद कर सकते हैं?

अधिक? इससे ज्यादा क्या?


अपने विशिष्ट सेटअप में, मुझे नहीं लगता कि मैं OpenAM जैसी किसी चीज़ का उपयोग कर सकता हूं। मुझे एंटरप्राइज-वाइड सिंगल साइन-ऑन की आवश्यकता नहीं है। मुझे लगता है कि मुझे कुछ छोटे और अधिक आत्म-निहित की आवश्यकता है।
एलन

@Allen। हम एंटरप्राइज़-वाइड सिंगल साइन-ऑन के लिए इसका उपयोग नहीं करते हैं। हम इसे सरल पहचान प्रबंधन के लिए उपयोग करते हैं।
एस.लॉट 4
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.