2015-07-02 15 views
5

में कॉसमॉस के वेबएचडीएफएस तक पहुंच मैंने हाल ही में FIWARE लैब में कॉसमॉस 'वेबएचडीएफएस तक पहुंच को ओएथ 2 से संरक्षित किया है। मुझे पता है कि मुझे वेबएचडीएफएस का उपयोग जारी रखने के लिए अनुरोध में ओएथ 2 टोकन जोड़ना है, लेकिन:OAuth2 FIWARE लैब

  • मैं टोकन कैसे प्राप्त कर सकता हूं?
  • अनुरोध में टोकन कैसे जोड़ा जाता है?

टोकन के बिना, एपीआई हमेशा रिटर्न:

$ curl -X GET "http://cosmos.lab.fi-ware.org:14000/webhdfs/v1/user/gtorodelvalle?op=liststatus&user.name=gtorodelvalle" 
Auth-token not found in request header 

उत्तर

3

हाँ, अब WebHDFS पहुँच OAuth2 के साथ सुरक्षित है। यह FIWARE में REST API को पूर्ववत करने के लिए सामान्य तंत्र का हिस्सा है, जो प्रमाणीकरण और प्रमाणीकरण करता है। आप अधिक जानकारी here पा सकते हैं।

सबसे पहले, आपको कॉसमॉस टोकन जेनरेटर को ओएथ 2 टोकन का अनुरोध करना होगा। यह एक सेवा है जो cosmos.lab.fiware.org:13000 में चल रही है। एक पासवर्ड आधारित अनुदान प्रकार के रूप में,

$ curl -k -X POST "https://cosmos.lab.fiware.org:13000/cosmos-auth/v1/token" -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=password&[email protected]&password=xxxxxxxx" 
{"access_token": "qjHPUcnW6leYAqr3Xw34DWLQlja0Ix", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "V2Wlk7aFCnElKlW9BOmRzGhBtqgR2z"} 

आप देख सकते हैं, अपने FIWARE लैब साख पेलोड में आवश्यक हैं: तुम्हें पता है, सबसे आसान तरीका है कर्ल आदेश का उपयोग कर रहा है यह किसी भी बाकी क्लाइंट का उपयोग कर सकते हैं ।

एक बार एक्सेस टोकन मिल गया है (ऊपर दिए गए उदाहरण में, यह qjHPUcnW6leYAqr3Xw34DWLQlja0Ix है), बस इसे उसी वेबएचडीएफएस अनुरोध में जोड़ें जो आप अतीत में कर रहे थे। टोकन X-Auth-Token हैडर का उपयोग करके जोड़ा जाता है:

$ curl -X GET "http://cosmos.lab.fiware.org:14000/webhdfs/v1/user/frb/path/to/the/data?op=liststatus&user.name=frb" -H "X-Auth-Token: qjHPUcnW6leYAqr3Xw34DWLQlja0Ix" 
{"FileStatuses":{"FileStatus":[...]}} 

आप एक यादृच्छिक टोकन के माध्यम से ऊपर अनुरोध प्रयास करते हैं तो सर्वर टोकन वापस आ जाएगी मान्य नहीं है; ऐसा इसलिए है क्योंकि आपके पास ठीक ढंग से प्रमाणीकृत नहीं है:

$ curl -X GET "http://cosmos.lab.fiware.org:14000/webhdfs/v1/user/frb/path/tp/the/data?op=liststatus&user.name=frb" -H "X-Auth-Token: randomtoken93487345" 
User token not authorized 

उसी तरह, यदि कोई मान्य टोकन का उपयोग लेकिन एक और HDFS यूज़रस्पेस तक पहुँचने का प्रयास, आप एक ही जवाब मिल जाएगा; कि है, क्योंकि आप अधिकृत किसी भी HDFS यूज़रस्पेस उपयोग करने के लिए नहीं हैं, लेकिन एक आप के स्वामित्व:

$ curl -X GET "http://cosmos.lab.fiware.org:14000/webhdfs/v1/user/fgalan/path/tp/the/data?op=liststatus&user.name=fgalan" -H "X-Auth-Token: qjHPUcnW6leYAqr3Xw34DWLQlja0Ix" 
User token not authorized 

महत्वपूर्ण अपडेट:

गर्मियों 2016 से, cosmos.lab.fiware.org अब और काम नहीं कर रहा है। इसके बजाए, क्लस्टर की एक जोड़ी, storage.cosmos.lab.fiware.org और computing.cosmos.lab.fiware.org स्थापित की गई है। कॉसमॉस के लेखक सर्वर के संबंध में, यह वर्तमान में computing.cosmos.lab.fiware.org, पोर्ट टीसीपी/13000 में चलाया जाता है।

+0

के लिए है (एक ओपनस्टैक हैडर) OAuth2 मानक में उपयोग किए गए शीर्षलेख का उपयोग करने के बजाय: 'प्राधिकरण'? –

+0

हम बीच में FIWARE PEP प्रॉक्सी का उपयोग कर रहे हैं (https://github.com/ging/fi-ware-pep-proxy)। वह घटक दस्तावेज के इस टुकड़े में 'एक्स-ऑथ-टोकन' के उपयोग को निर्दिष्ट करता है: https://github.com/ging/fi-ware-pep-proxy#how-to-use। – frb

+0

अब, यह समाधान काम नहीं कर रहे हैं :( – miguelbemartin

1

सही अनुरोध होना चाहिए:

कर्ल -X पोस्ट "https://cosmos.lab.fi-ware.org:13000/cosmos-auth/v1/token" एच "सामग्री प्रकार: आवेदन/x-www फार्म-urlencoded" -d "grant_type = पासवर्ड & उपयोगकर्ता नाम = उपयोगकर्ता @ डोमेन .com & पासवर्ड = YourPassword "-k

यूआरएल गलत थी, तो सही https://cosmos.lab.fi-ware.org:13000

-k` क्यों का उपयोग कर एक्स-प्रमाणीकरण-Token` प्रमाण पत्र सत्यापन बारी बंद

+0

आप '-k' विकल्प के साथ सही हैं, मैं इसे भूलना भूल गया (धन्यवाद!)। एंडपॉइंट के बारे में,' cosmos.lab.fiware.org' और 'cosmos दोनों। lab.fi-ware.org' को एक ही आईपी पते पर हल किया गया है। – frb

+0

का उपयोग स्थानीय विकास के अलावा किसी अन्य चीज़ के लिए बेहद खराब अभ्यास माना जाता है। फायर-वेयर एक तृतीय-पक्ष मान्य एसएसएल प्रमाण कब स्थापित करेगा? – amn41