2012-06-27 12 views
5

के साथ REST API को सुरक्षित करना मैं Grails का उपयोग कर एक REST API बना रहा हूं। मैं इसे OAuth2.0 क्लाइंट_credentials प्रवाह (grant_type) का उपयोग करके संरक्षित करना चाहता हूं।Grails: OAuth2.0

एक बाहरी एजेंट की तरह

http://server-url/oauth/token?client_id=clientId&client_secret=clientSecret&grant_type=client_credentials 

कुछ के लिए एक अनुरोध भेजने के लिए और एक ACCESS_TOKEN प्राप्त करेंगे: मेरी यूज-केस इस प्रकार है। फिर, मेरे यूआरएल (संरक्षित संसाधन) की तरह

http://server-url/resource?access_token={access-token obtained before} 

मैं कुछ है कि आसान और त्वरित Grails पर ऐसा करने में आता है के लिए देख रहा हूँ कुछ के साथ उस तक पहुंच नहीं करना चाहिए। इसके लिए उपयोग करने के लिए सबसे अच्छा तरीका/उपकरण/प्लगइन क्या होगा? स्क्रिप्ट लाइब्रेरी एक विकल्प है, यदि मेरे विशिष्ट उपयोग-मामले के लिए कोई ट्यूटोरियल हैं, तो यह बहुत अच्छा होगा।

पीएस .: मैंने वसंत-सुरक्षा और संबंधित प्लगइन्स की कोशिश की है, कोई खुशी नहीं है। कोई विकल्प अच्छा होगा।

+0

क्षमा के साथ चल रहा था, मुंशी केवल पल के लिए क्लाइंट-साइड है। इसे पुनः प्राप्त करना –

उत्तर

-1

मेरे अनुभवों के आधार पर, स्क्रिप्ट OAuth 1.0 के लिए बनाया गया था और OAuth 2.0 के लिए केवल बहुत सीमित समर्थन है। वास्तव में, हमारे अपने ओथ 2 कार्यान्वयन का परीक्षण करने के लिए, हम इसका उपयोग कर सकते हैं, एक HTTP अनुरोध रैपर था, हमें मैन्युअल रूप से कुछ और करना था। सौभाग्य से, इसे मैन्युअल रूप से कर रहा है आश्चर्यजनक रूप से आसान है।

चूंकि मुझे अभी भी जावा के लिए ओपन 2.0 लाइब्रेरी नहीं मिली है (स्पष्ट रूप से मैं ग्रोवी से परिचित नहीं हूं), मैं आपको अपने लिए क्लाइंट कोड लिखने के लिए प्रोत्साहित करता हूं। क्लाइंट क्रेडेंशियल्स अनुदान प्रवाह का उपयोग करने के लिए आपको क्लाइंट कॉलबैक एंडपॉइंट की भी आवश्यकता नहीं है। तो आप बस एक HTTP अनुरोध बनाते हैं (जैसा कि आपने पहले से लिखा है, हालांकि जीईटी पैरामीटर से बचने के लिए सावधानी बरतें) और प्रतिक्रिया सामग्री प्राप्त करें। आपका प्रवाह रीडायरेक्ट का उपयोग नहीं करता है, इसलिए प्रतिक्रिया सामग्री में JSON ऑब्जेक्ट को बस पार्स करें, उदा। org.json पुस्तकालय के साथ। अंत में, निकाले गए एक्सेस टोकन का उपयोग करके एक HTTP अनुरोध भेजें।

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

मैंने आपके प्रश्न को गलत समझा होगा, और आप भी सर्वर पक्ष को कार्यान्वित करना चाहेंगे। लेखक पुस्तकालय केवल ग्राहक पक्ष का समर्थन करता है, इसलिए आप एक वाणिज्यिक कार्यान्वयन पा सकते हैं या अपने सर्वर को कार्यान्वित कर सकते हैं। यह एक जटिल कार्य है, लेकिन यदि आप केवल ग्राहक प्रमाण-पत्र प्रवाह का समर्थन करते हैं, तो यह लगभग आसान हो जाता है। ;-)

+0

आपके इनपुट के लिए धन्यवाद। लेकिन, मुझे सर्वर साइड कार्यान्वयन में रूचि है।मैं इसे खरोंच से लागू करने में थोड़ा संकोच नहीं कर रहा था क्योंकि मैं ओएथ सुरक्षा विशेषज्ञ नहीं हूं और कोई सुरक्षा दोष नहीं छोड़ना चाहता हूं: पी। सटीक होने के लिए, मैं ऐसा कुछ ढूंढ रहा था जो जेनरेट किए गए एक्सेस टोकन को स्टोर/प्रबंधित करने में मेरी सहायता कर सके [समाप्ति समय के बाद स्वचालित रूप से उन्हें अमान्य कर दें] आदि। बेशक, कोई इसे स्क्रैच से कर सकता है लेकिन यह कुछ अंतराल छोड़ सकता है। क्या ऐसा कुछ जावा के लिए मौजूद है, जो सर्वर पक्ष पर जेनरेट करने, स्टोर टोकन इत्यादि के लिए एक आसान इंटरफ़ेस प्रदान करता है? – SoftDev

+0

मुझे ऐसी कोई लाइब्रेरी नहीं पता है, लेकिन टोकन स्टोरेज एक स्पष्ट इंटरफेस के साथ प्लगइन के रूप में कार्यान्वित करने का सबसे आसान हिस्सा है (एक स्टोर, लोड और रिवोक ऑपरेशन आपको बस चाहिए)। आपको ग्राहक प्रमाण-पत्र अनुदान प्रवाह को लागू करने और क्लाइंट प्रमाण-पत्रों के लिए पूर्वनिर्धारित अधिकारों को संग्रहीत करने के सुरक्षा विवरणों के बारे में अधिक चिंतित होना चाहिए। –

2

मेरे पास एक ही समस्या है। मुझे बहुत सारे grails प्लगइन्स मिले जो आपको अन्य ऐप प्रदाताओं के खिलाफ अपने ऐप को प्रमाणित करने में मदद करते थे, लेकिन कुछ भी नहीं जो मुझे अपने ऐप को ओथ प्रदाता बनाने में मदद करेगा। खुदाई के बाद, मैं इस grails प्लगइन में आया था कि आप वही करेंगे जो आप चाहते हैं।

https://github.com/adaptivecomputing/grails-spring-security-oauth2-provider

मैं अभी भी अपने आवेदन के लिए यह विन्यस्त करने कर रहा हूँ, और मुझे लगता है कि डॉक्स कुछ संपादन (विशेष रूप से authorization_code प्रवाह) की आवश्यकता हो सकती है, लेकिन मैं सरल client_credentials न्यूनतम विन्यास के साथ काम करने के लिए प्रवाह मिला है। उम्मीद है की वो मदद करदे!

+0

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

-1

यह एक प्लगइन नहीं है, यह सिर्फ नमूना Grails एप्लिकेशन है जो OAuth प्रदाता के रूप में कार्य करता है। यह वास्तव में प्राप्त करने के लिए आसान है और Grails 3.

https://github.com/bobbywarner/grails3-oauth2-api