2010-05-05 15 views
5

मेरे पास एक एपीआई के साथ रेल 2.3.5 एप्लिकेशन है जो मैं रक्षा करना चाहता हूं।दो पैर वाले ओएथ प्रदाता रेल?

कोई उपयोगकर्ता नहीं है - यह ऐप शैली webservice (फेसबुक की तुलना में एक अमेज़ॅन सेवा की तरह) के लिए एक ऐप है, और इसलिए मैं इसे दो पैर वाले ओएथ दृष्टिकोण का उपयोग करके कार्यान्वित करना चाहता हूं।

मैं एक शुरुआत के रूप OAuth-प्लगइन सर्वर कार्यान्वयन उपयोग करने के लिए कोशिश कर रहे हैं:

http://github.com/pelle/oauth-plugin

... लेकिन यह तीन पैर (वेब ​​रीडायरेक्ट प्रवाह) OAuth उम्मीद कर बनाया गया है।

इससे पहले कि मैं दो पैर वाली सहायता के लिए इसमें बदलाव करने में गहरी खुदाई करूँ, मैं देखना चाहता था कि क्या कोई आसान तरीका है, या यदि किसी के पास एक दो-पैर वाले ओएथ प्रदाता होने के लिए रेल ऐप के लिए बेहतर दृष्टिकोण था ।

उत्तर

8

पहले, ओथ इंटरैक्शन के इस सबसेट को प्राप्त करने के लिए ओथ-प्लगइन में एकमात्र अच्छा जवाब हैक करना था। तब से, OAuth-प्लगइन पुनर्संशोधित किया गया है, और अब आप इसका इस्तेमाल कर सकते हैं सीधे ऊपर, बस अपने नियंत्रक करने के लिए प्रमाणीकरण फिल्टर का सही प्रकार जोड़कर:

class ApiController < ApplicationController 

    include OAuth::Controllers::ApplicationControllerMethods 

    oauthenticate :strategies => :two_legged, :interactive => false 

    # ... 

end 
+0

इस पर कहीं और दस्तावेज है? ... दो पैर वाले संस्करण का मतलब है ... –

+0

जेमफाइल को ओथ-प्लगइन जोड़ें, 'रेल g oauth_provider' चलाएं, उपरोक्त को अपने नियंत्रक में जोड़ें। यदि आपके पास इससे परे समस्याएं हैं, तो मैं शायद मदद कर सकता हूं। –

+1

मैं यह काम नहीं कर सकता। जैसे ही मैं दो पैर वाली रणनीति में बदल जाता हूं, इंटरैक्टिव झूठी विकल्प मुझे अमान्य OAuth अनुरोध त्रुटियां मिलती हैं। क्या मुझे क्लाइंट एंड पर कुछ अलग करना है? मैं इस ट्यूटोरियल का पालन करने की कोशिश कर रहा हूं - http://unhandledexpression.com/2011/06/28/rails-and-oauth-plugin-part-2-the-consumer/ - और यह एक प्रदाता/उपभोक्ता सेट अप प्राप्त करने के लिए काम करता है 3-पैर वाले ओएथ के लिए और मैं इसे 2-पैर बनाने की कोशिश कर रहा हूं। कोई विचार? –

5

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

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

+0

अच्छी सलाह। मुझे लगता है कि मैं सिर्फ प्लगइन से जो चाहता हूं उसे बाहर निकाल दूंगा। चूंकि दो पैर वाले अनुरोध के लिए हस्ताक्षर टोकन के प्रारंभिक अनुरोध पर हस्ताक्षर की तरह दिखता है, इसलिए मैं उस पर दो पैर वाले लेख का आधार बनाने में सक्षम था (विशेष रूप से verify_oauth_consumer_signature)। –

+0

ठीक है - यह काम कर रहा है, और अधिकांश प्लगइन साफ़ कर दिया। जब मुझे मौका मिलता है तो इसके लिए एक गिस्ट/शाखा जारी की जाएगी। –

+0

@Andrew उस पर कोई शब्द 2 पैर वाले गिस्ट को साफ करता है? इसे उधार लेना अच्छा लगेगा :) –

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