2013-07-14 16 views
13

से ओएथ 2.0 एक्सेस टोकन को मान्य करें, मैं अपने स्प्रिंग रीस्टफुल बैकएंड को सुरक्षित करना चाहता हूं। एक तरह से (? दाएं) यहाँ दिखाया गया है की तरह OAuth 2.0 उपयोग करने के लिए है:स्प्रिंग रीस्टफुल संसाधन सर्वर

http://www.youtube.com/watch?v=8uBcpsIEz2I

मेरी वास्तुकला संसाधन सर्वर और प्राधिकरण सर्वर में नहीं हैं एक ही इकाई। मैं वास्तव में बस कुछ JSON REST सेवाएं प्रदान करता हूं। कोई यूआई नहीं अगर मैं OAuth2 RFC पढ़ वे सिर्फ कहते हैं:

प्राधिकरण सर्वर और संसाधन सर्वर के बीच बातचीत इस विनिर्देश के दायरे से बाहर है। प्राधिकरण सर्वर संसाधन सर्वर या एक अलग इकाई के समान सर्वर हो सकता है। एक एकल प्रमाणीकरण सर्वर एकाधिक संसाधन सर्वर द्वारा स्वीकार किए गए एक्सेस टोकन जारी कर सकता है।

enter image description here

"टोकन" प्रदाता:: इस/होना चाहिए सकता है

मैं cloudfoundry.com पर एक अच्छा चित्र (यूट्यूब वीडियो के ऊपर से संबंधित) जो मैं मेरे विचार को वर्णन करने का उपयोग कर रहा पाया उदाहरण के लिए गूगल या फेसबुक।

विश्वसनीय बैकएंड: यह वास्तव में मेरा कोड है। जैसे वसंत RESTful सेवाएं:

@Controller 
@RequestMapping("/api/v1") 
public class MyResourceToProtect { 

    @Autowired 
    private MyService service; 

    @RequestMapping(value = "/resource/delete/{name}", 
        method = RequestMethod.DELETE, 
        consumes = MediaType.APPLICATION_JSON_VALUE, 
        headers = "Content-Type=application/json") 
    @ResponseStatus(HttpStatus.OK) 
    public void delete(@PathVariable("name") String name) { 
     service.delete(name); 
    } 
} 

(यह सिर्फ कुछ नमूना कोड है)

अब मेरे सवाल: यह किसी तरह पहुंच टोकन जो AuthServer (फेसबुक, गूगल) द्वारा उत्पन्न कर रहे मान्य करने के लिए संभव है? मुझे पता है कि मुझे अपने संसाधन सर्वर पर कहीं भी "उपयोगकर्ता को टोकन" मैपिंग (डेटाबेस) होना चाहिए। मूल रूप से मैं PayPal से एक के लिए की तरह मेरे RESTful API डिजाइन करने के लिए करना चाहते हैं:

https://developer.paypal.com/webapps/developer/docs/integration/direct/make-your-first-call/

लेकिन मैं चरण 1 & 2 मैं प्रमाणन प्रदाताओं के रूप में फेसबुक या गूगल का उपयोग करना चाहते हैं तो कैसे संभाल कर सकते हैं? क्या यह भी संभव है?

अतिरिक्त विचार: शायद मुझे अपना खुद का /oauth2/token एंडपॉइंट प्रदान करने की आवश्यकता है और फिर अंतर्निहित ऑथप्रोवाइडर को प्रतिनिधि दें।

उत्तर

4

सुनिश्चित नहीं हैं कि एक अच्छा धनुष के साथ सभी सवालों के जवाब के लिए कैसे, तो मैं बस निम्नलिखित बातों वहाँ बाहर डाल देता हूँ:

  • आप कोशिश कर रहे हैं सिर्फ एक में फेसबुक जैसी एक OAuth-सुरक्षित एपीआई का उपभोग करने के ओथ-सुरक्षित फैशन? वसंत सामाजिक का प्रयोग करें।
  • यदि आप अपना ओवन रीस्ट एपीआई बनाने की कोशिश कर रहे हैं और अपने यूजर उपयोगकर्ता संदर्भ का उपयोग कर रहे हैं, तो स्प्रिंग सिक्योरिटी ओएथ का उपयोग करें। इस मामले में, आपको ग्राहकों को अपने एपीआई के खिलाफ ओएथ का उपयोग करके प्रमाणित करने की आवश्यकता होगी, फेसबुक या लिंक्डइन आदि नहीं।
  • वसंत सामाजिक सुरक्षा (1.2.x श्रृंखला में) उपयोगकर्ता को 'ओथ' के परिणामस्वरूप 'हस्ताक्षर' का समर्थन करता है कनेक्शन (उदाहरण के लिए, 'फेसबुक के साथ साइनइन करें,' '.. ट्वीटर,' '..लिंक्डिन,' इत्यादि, और आपका एप्लिकेशन आखिरकार सत्र में स्प्रिंग सिक्योरिटी प्रिंसिपल के साथ समाप्त होता है, जैसे कि आपने साइन करने के लिए HTTP फॉर्म का उपयोग किया था मैन्युअल रूप से उपयोगकर्ता।
  • वसंत सुरक्षा OAuth परवाह नहीं है कि आपको स्प्रिंग सुरक्षा प्रिंसिपल कहां से मिला है। यह सिर्फ परवाह करता है कि क्या प्रिंसिपल में स्प्रिंग सिक्योरिटी ओएथ क्लाइंट द्वारा आवश्यक सही भूमिकाएं/स्कोप हैं। इसलिए, ऐसा कोई कारण नहीं है कि आप स्प्रिंग सोशल का उपयोग फेसबुक से सुरक्षित रूप से कनेक्ट करने के लिए नहीं कर सकते हैं, स्प्रिंग सोशल सिक्योरिटी का उपयोग उस कनेक्शन को स्प्रिंग सिक्योरिटी प्रमाणीकरण ऑब्जेक्ट बनाने के लिए करें, और उसके बाद स्प्रिंग सिक्योरिटी ओएथ का उपयोग करें ताकि आपके एपीआई में किसी भी पहुंच को सुरक्षित किया जा सके, जिसमें मोड़ दृश्यों के पीछे फेसबुक के एपीआई से सुरक्षित रूप से कनेक्ट हो सकता है। ग्राहक आपके एपीआई के लिए ओएथ एक्सेस टोकन का उपयोग करेंगे, फेसबुक पर नहीं। यह सेवा में संभाला जाता है।
+0

मेरा उपयोग केस ओपी के समान ही है, और मुझे संदेह है कि @domi के लिए आपका उत्तर मेरी वर्तमान समस्या का भी उत्तर देता है - अगर मेरे पास "फ्रंट एंड" एप्लिकेशन स्प्रिंग सोशल का उपयोग करके लिखा गया है, और इसे मिला Google से कहने के लिए OAuth पहुंच टोकन, उस "फ्रंट एंड" एप्लिकेशन को मेरे स्प्रिंग सुरक्षा एप्लिकेशन में टोकन तक पहुंचने के लिए कैसे पास करना चाहिए? हमने इसका उपयोग करने के लिए "प्रमाणीकरण:" हेडर के माध्यम से इसे पारित करने का प्रयास किया है। –

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