मैं oauth 1.0 (ट्विटर और फ़्लिकर) से निपट रहा हूं। वेबसाइट पोर्ट 80 पर काम करता है और OAuth सर्वर पोर्ट पर काम करता है 8080रैक को कैसे बल देना है: सत्र + sinatra कुकीज़ के बजाय पैरामीटर से "rack.session" पढ़ने के लिए
एल्गोरिथ्म: OAuth सर्वर से
- भेजने ajax अनुरोध जाँच करने के लिए करता है, तो उपयोगकर्ता ACCESS_TOKEN वैध
- खुला प्राधिकरण विंडो अगर उपयोगकर्ता कोई ACCESS_TOKEN या ACCESS_TOKEN है समय सीमा समाप्त हो जाता है
- बचाने OAuth सर्वर
यह सत्रों को स्टोर करने के लिए sinatra + rack: session + rack :: session :: sequel + sqlite का उपयोग करता है। यह प्रत्येक प्रतिक्रिया में Set-Cookie: rack.session=id
भेजता है
मैं 2 प्रकार के अनुरोध का उपयोग कर रहा हूं: jquery के साथ crossdomain AJAX और window.open के साथ सामान्य अनुरोध। मुझे crossdomain AJAX अनुरोध के लिए कुकीज़ पास करने में एक बड़ी सुरक्षा समस्या है।
कोई फर्क नहीं पड़ता कि सर्वर की प्रतिक्रिया हेडर
Access-Control-Allow-Headers: *
क्रोमियम शामिल सुरक्षा त्रुटि फेंक देगा:
Refused to set unsafe header "Cookie"
मैं rack.session = आईडी डेटा पोस्ट और लोड करने के लिए पारित करके इस समस्या से बचने के लिए चाहते हैं :
before "/twitter/connect.json" do
session = Rack::Session::something(params["rack.session"])
end
लेकिन मुझे यह दस्तावेज नहीं मिल रहा है कि यह कैसे करें
मैं थोड़ा उलझन में हूं कि कौन सा सर्वर क्या कर रहा है। कौन सा सर्वर 'पहले' ब्लॉक चल रहा है? जब आप लिखते हैं "oauth सर्वर पर उपयोगकर्ता के सत्र में access_token सहेजें" क्या इसका मतलब डेटाबेस के माध्यम से सहेजना है? "यह sinatra + रैक का उपयोग करता है: सत्र ...", 'इसका मतलब वेबसाइट है? एक pedantic होने के लिए खेद है लेकिन स्पष्टता सवाल का जवाब देने में मदद मिलेगी। – iain