जवाबों:
http://curl.haxx.se/docs/httpscripting.html
भाग 6 देखें। HTTP प्रमाणीकरण
HTTP प्रमाणीकरण
HTTP प्रमाणीकरण, सर्वर को आपका उपयोगकर्ता नाम और पासवर्ड बताने की क्षमता है ताकि यह सत्यापित कर सके कि आप जो अनुरोध कर रहे हैं उसे करने की अनुमति है। HTTP में उपयोग किया जाने वाला बेसिक प्रमाणीकरण (जो डिफ़ॉल्ट रूप से कर्ल टाइप का उपयोग होता है) सादा पाठ आधारित होता है, जिसका अर्थ है कि यह उपयोगकर्ता नाम और पासवर्ड को केवल थोड़े से मोटे तौर पर भेजता है, लेकिन फिर भी किसी के द्वारा पूरी तरह से पढ़ने योग्य है जो आपके और दूरस्थ सर्वर के बीच नेटवर्क पर सूँघता है।
प्रमाणीकरण के लिए उपयोगकर्ता और पासवर्ड का उपयोग करने के लिए कर्ल बताने के लिए:
curl --user name:password http://www.example.com
साइट को एक अलग प्रमाणीकरण विधि की आवश्यकता हो सकती है (सर्वर द्वारा दिए गए हेडर की जांच करें), और फिर --ntlm, --digest, --negotiate या यहां तक कि - कन्या आपके लिए उपयुक्त विकल्प हो सकते हैं।
कभी-कभी आपकी HTTP एक्सेस केवल HTTP प्रॉक्सी के उपयोग के माध्यम से उपलब्ध होती है। यह विभिन्न कंपनियों में विशेष रूप से आम लगता है। एक HTTP प्रॉक्सी को क्लाइंट के इंटरनेट के माध्यम से प्राप्त करने की अनुमति देने के लिए अपने स्वयं के उपयोगकर्ता और पासवर्ड की आवश्यकता हो सकती है। कर्ल के साथ उन लोगों को निर्दिष्ट करने के लिए, कुछ इस तरह से चलाएं:
curl --proxy-user proxyuser:proxypassword curl.haxx.se
यदि आपके प्रॉक्सी को NTLM विधि का उपयोग करके प्रमाणीकरण की आवश्यकता होती है, तो --proxy-ntlm का उपयोग करें, यदि इसके लिए डाइजेस्ट उपयोग --proxy-digest की आवश्यकता हो।
यदि आप इनमें से किसी एक उपयोगकर्ता + पासवर्ड विकल्प का उपयोग करते हैं, लेकिन पासवर्ड भाग को छोड़ देते हैं, तो कर्ल अंतःक्रियात्मक रूप से पासवर्ड के लिए संकेत देगा।
ध्यान दें कि जब कोई प्रोग्राम चलाया जाता है, तो इसके पैरामीटर सिस्टम की चल रही प्रक्रियाओं को सूचीबद्ध करते समय देख सकते हैं। इस प्रकार, अन्य उपयोगकर्ता आपके पासवर्ड को देखने में सक्षम हो सकते हैं यदि आप उन्हें सादे कमांड लाइन विकल्प के रूप में पास करते हैं। इसे दरकिनार करने के तरीके हैं।
यह ध्यान देने योग्य है कि जबकि यह है कि HTTP प्रमाणीकरण कैसे काम करता है, बहुत से वेब साइट इस अवधारणा का उपयोग नहीं करेंगे जब वे लॉगिन आदि प्रदान करते हैं। उस पर अधिक जानकारी के लिए नीचे वेब लॉगिन अध्याय देखें।
बस आपको क्लिक-थ्रू जोड़ना नहीं है:
curl --user name:password http://www.example.com
या यदि आप OAuth 2 के लिए प्रमाणीकरण भेजने की कोशिश कर रहे हैं:
curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
-H
विकल्प महान है।
-H Authorization: Basic <Base64EncodedCredentials>
HMAC-SHA256
हमेशा गुम प्राधिकरण प्राधिकरण की एक त्रुटि हो रही है
<Base64EncodedCredentials>
के रूप में द्वारा @ टिमोथी-kansaki उल्लेख किया है, आप प्राप्त कर सकते हैं एन्कोडेड क्रेडेंशियल आदेश का उपयोग: cred="$( echo $NAME:$PASSWORD | base64 )"; curl -H "Authorization: Basic $cred" https://example.com
। संदर्भ के लिए, देखें stackoverflow.com/questions/16918602/…
बियर के टोकन इस तरह दिखते हैं:
curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com
(जो लोग php- कर्ल उत्तर की तलाश में हैं)
$service_url = 'https://example.com/something/something.json';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password"); //Your credentials goes here
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //IMP if the url has https and you don't want to verify source certificate
$curl_response = curl_exec($curl);
$response = json_decode($curl_response);
curl_close($curl);
var_dump($response);
यह मेरे लिए काम किया:
curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/
Authorization: bearer xxxxxxxxx
?
Bearer
Bearer
।
HTTP बेसिक प्रमाणीकरण के लिए:
curl -H "Authorization: Basic <_your_token_>" http://www.example.com
बदलें _your_token_
और URL।
echo -ne "<your-user>:<your-pass>" | base64 --wrap 0
मूल ओर्गेनिक टोकन उत्पन्न करेगा।
-H "Authorization: Basic <_your_token_>"
जैसा प्रभाव डालता है --user login:password
। आप के साथ यह जाँच कर सकते हैंcurl -v
सावधान रहें कि जब आप उपयोग कर रहे हों:
curl -H "Authorization: token_str" http://www.example.com
token_str
और Authorization
सफेद स्थान से अलग होना चाहिए, अन्यथा सर्वर-साइड को HTTP_AUTHORIZATION
वातावरण नहीं मिलेगा ।
यदि आपके पास कॉल के समय टोकन नहीं है, तो आपको दो कॉल करने होंगे, एक टोकन प्राप्त करने के लिए और दूसरा टोकन फॉर्म निकालने के लिए प्रतिक्रिया के लिए, ध्यान देना होगा
grep टोकन | cut -d, -f1 | कट -d \ "-f4
जैसा कि यह हिस्सा है जो प्रतिक्रिया से टोकन निकालने के साथ काम कर रहा है।
echo "Getting token response and extracting token"
def token = sh (returnStdout: true, script: """
curl -S -i -k -X POST https://www.example.com/getToken -H \"Content-Type: application/json\" -H \"Accept: application/json\" -d @requestFile.json | grep token | cut -d, -f1 | cut -d\\" -f4
""").split()
टोकन निकालने के बाद आप टोकन का उपयोग निम्न प्रकार से कॉल करने के लिए कर सकते हैं।
echo "Token : ${token[-1]}"
echo "Making calls using token..."
curl -S -i -k -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer ${token[-1]}" https://www.example.com/api/resources