কার্ল ব্যবহার করে অনুমোদন শিরোনাম কীভাবে সেট করবেন


397

আমি কীভাবে সিআরএল ব্যবহার করে অনুমোদনের শিরোনাম পাস করব? (এক্সিকিউটেবল ইন /usr/bin/curl)।

উত্তর:


394

http://curl.haxx.se/docs/httpscripting.html

অংশ 6 দেখুন। HTTP প্রমাণীকরণ

HTTP প্রমাণীকরণ

এইচটিটিপি প্রমাণীকরণ হ'ল সার্ভারটি আপনার ব্যবহারকারীর নাম এবং পাসওয়ার্ডটি বলার ক্ষমতা যাতে এটি যাচাই করতে পারে যে আপনি যে অনুরোধটি করছেন তা করার অনুমতি দিয়েছেন। এইচটিটিপিতে ব্যবহৃত বেসিক প্রমাণীকরণ (এটি ডিফল্টরূপে কার্ল ব্যবহার করে টাইপ করা হয়) প্লেইন টেক্সট ভিত্তিক, যার অর্থ এটি ব্যবহারকারীর নাম এবং পাসওয়ার্ডটি কেবলমাত্র কিছুটা অবরুদ্ধ করে প্রেরণ করে তবে আপনার এবং রিমোট সার্ভারের মধ্যে নেটওয়ার্কে স্নিগ্ধ এমন যে কেউ এখনও পুরোপুরি পঠনযোগ্য।

প্রমাণীকরণের জন্য ব্যবহারকারী এবং পাসওয়ার্ড ব্যবহার করতে কার্লকে বলতে:

curl --user name:password http://www.example.com

সাইটের জন্য আলাদা আলাদা প্রমাণীকরণ পদ্ধতি প্রয়োজন (সার্ভার দ্বারা ফিরে আসা শিরোনামগুলি পরীক্ষা করুন) এবং তারপরে --ntlm, --digest, --negotiate বা এমনকি --anyauth আপনার পছন্দ অনুসারে বিকল্প হতে পারে।

কখনও কখনও আপনার HTTP অ্যাক্সেস কেবলমাত্র HTTP প্রক্সি ব্যবহারের মাধ্যমেই উপলব্ধ। এটি বিভিন্ন সংস্থায় বিশেষত সাধারণ বলে মনে হয়। এইচটিটিপি প্রক্সির ক্লায়েন্টকে ইন্টারনেটে প্রবেশের অনুমতি দেওয়ার জন্য তার নিজস্ব ব্যবহারকারী এবং পাসওয়ার্ডের প্রয়োজন হতে পারে। কার্ল সহ তাদের নির্দিষ্ট করতে, এমন কিছু চালান:

curl --proxy-user proxyuser:proxypassword curl.haxx.se

যদি আপনার প্রক্সিটির এনটিএলএম পদ্ধতি ব্যবহার করে প্রমাণীকরণের প্রয়োজন হয় তবে --proxy-ntlm ব্যবহার করুন, যদি এটি ডাইজেস্ট ব্যবহারের প্রয়োজন হয় --প্রক্সি-ডাইজেস্ট।

আপনি যদি এই ব্যবহারকারীর + পাসওয়ার্ড বিকল্পগুলি ব্যবহার করেন তবে পাসওয়ার্ডের অংশটি ছেড়ে যান, কার্ল ইন্টারেক্টিভভাবে পাসওয়ার্ডের জন্য অনুরোধ করবে।

মনে রাখবেন যে যখন কোনও প্রোগ্রাম চালানো হয় তখন সিস্টেমের চলমান প্রক্রিয়াগুলির তালিকা তৈরি করার সময় এর পরামিতিগুলি দেখা সম্ভব হতে পারে। সুতরাং, অন্য ব্যবহারকারীরা আপনার পাসওয়ার্ডগুলি যদি প্লেইন কমান্ড লাইন বিকল্প হিসাবে পাস করে তবে তা দেখতে সক্ষম হতে পারে। এটি রোধ করার উপায় রয়েছে।

এটি লক্ষণীয় যে এইচটিটিপি অনুমোদনের কাজটি করার সময়, অনেক লগইন সরবরাহ করার সময় অনেক ওয়েব সাইট এই ধারণাটি ব্যবহার করে না that এ সম্পর্কে আরও তথ্যের জন্য নীচের ওয়েব লগইন অধ্যায়টি দেখুন।


16
@ ভিক্সড এই প্রশ্নটি পিএইচপি সম্পর্কে স্পষ্টভাবে নয়। [গুগলের ফলাফলগুলির সাথে কী ভুল হয়েছে] (গুলি)?
অলি

প্রশ্ন অনুমোদন নয় অনুমোদনের বিষয়ে, তাই সম্ভবত ওপি প্রশ্নের শিরোনাম পরিবর্তন করতে হবে
জাম

320

কেবল যোগ করা হচ্ছে যাতে আপনার ক্লিক-মাধ্যমে করতে হবে না:

curl --user name:password http://www.example.com

বা যদি আপনি OAuth 2 এর জন্য প্রমাণীকরণ প্রেরণ করার চেষ্টা করছেন:

curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com

15
অনেকগুলি এপিআই এখন শিরোনাম অনুমোদনের টোকেন ব্যবহার করে। -Hবিকল্প মহান।
ইলিয়োকস

14
যদি আপনি -u বা - ব্যবহারকারীর ব্যবহার করেন তবে কার্ল শংসাপত্রগুলি বেস 64 এ এনকোড করবে এবং এর মতো শিরোনাম তৈরি করবে:-H Authorization: Basic <Base64EncodedCredentials>
তীমথিয় কানসকি

আমি HMAC-SHA256সর্বদা নিখুঁত অনুমোদনের শিরোনামের একটি ত্রুটি পেয়ে একটি অনুমোদনের শিরোনাম যুক্ত করার চেষ্টা করছি
স্টিভেন আগুইলার

2
উপরন্তু, যদি আপনি প্রয়োজন <Base64EncodedCredentials>হিসাবে দ্বারা @ টিমোথি-kansaki উল্লেখ করা হয়েছে, আপনি পেতে পারেন এনকোডেড ক্রেডেনশিয়াল কমান্ড ব্যবহার করছে: cred="$( echo $NAME:$PASSWORD | base64 )"; curl -H "Authorization: Basic $cred" https://example.com। রেফারেন্সের জন্য দেখুন স্ট্যাকওভারফ্লো
প্রশ্নগুলি /

170

বহনকারী টোকেনগুলি দেখতে দেখতে:

curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com

7
এবং আপনি যদি 'বেসিক' অনুমোদনের সন্ধান করছেন, কেবল 'বেসিক' এর জন্য '
বেয়ার

আমি সবচেয়ে অদ্ভুত জিনিস পেয়েছি, আমি একটি "অনুমোদনের শিরোনামের ভুল ফর্ম্যাট" এবং "এইচটিটিপি -200" পাচ্ছি। তাই সার্ভার আমার অনুমোদন গ্রহণ করে, তবে ফর্ম্যাটটি কি ভুল?
গ্রোস্টাভ

64

(যারা পিএইচপি-কার্ল উত্তর খুঁজছেন )

$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);

64

এটি আমার পক্ষে কাজ করেছে:

 curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/

আপনি JWT এর জন্য কী ব্যবহার করছেন?
সিয়াসটো পাইকার্জ

1
মানে না Authorization: bearer xxxxxxxxx?
jlh

@ জেএলএইচ আপনার অর্থBearer
ড্যানিয়েল ডাব্লু।

আমি প্রায় নিশ্চিত ছিলাম যে এটি কেস-সংবেদনশীল নয়, তবে মনে হচ্ছে আমি ভুল। হ্যাঁ, আমি বোঝানো Bearer
jlh

20

HTTP বেসিক অথের জন্য:

curl -H "Authorization: Basic <_your_token_>" http://www.example.com

প্রতিস্থাপন _your_token_এবং ইউআরএল।


ওউথ ব্যবহার করার সময় অনুমোদনের টোকেনটি কোথা থেকে আসবে? আমি এমন কোনও সাইট থেকে ফাইল ডাউনলোড করতে কার্ল ব্যবহার করার চেষ্টা করছি যেখানে আমি ব্যবহারকারীর এবং পাসওয়ার্ড ব্যবহার করি তবে এটি oauth2 ব্যবহারের কারণে ব্যর্থ হতে পারে বলে মনে হচ্ছে।
-তে ctrl-alt-মুছে ফেলুন

@ টাসটিজ আপনাকে একটি টোকেন পাওয়ার জন্য Oauth2 প্রবাহের মধ্য দিয়ে যেতে হবে। সাধারণত এটি একটি দুই ধাপের প্রক্রিয়া এবং সার্ভারের ডকুমেন্টেশনে বিশদ হওয়া উচিত।
দেবারুপ

13
ভাল উত্তর. একটি ছোট echo -ne "<your-user>:<your-pass>" | base64 --wrap 0সহায়িকা মৌলিক লেখার টোকেন উত্পন্ন করবে।
মাইক ডি

3
@MikeD -H "Authorization: Basic <_your_token_>"হিসাবে একই প্রভাব আছে --user login:password। আপনি এটি দিয়ে পরীক্ষা করতে পারেনcurl -v
ভ্লাদক্রাস

1
@ ভ্লাদক্রাস আমার প্রতিক্রিয়া এই উত্তরের জন্য সহায়ক । আমার অভিজ্ঞতায়, টোকেনটি তৈরির জন্য কার্লের উপর নির্ভর না করে কীভাবে তৈরি করবেন তা বোঝা ভাল।
মাইক ডি

14

সতর্কতা অবলম্বন করুন যে আপনি যখন ব্যবহার করছেন: curl -H "Authorization: token_str" http://www.example.com

token_strএবং Authorizationঅবশ্যই সাদা স্থান দ্বারা পৃথক করা উচিত, অন্যথায় সার্ভার-সাইডটি HTTP_AUTHORIZATIONপরিবেশ পাবেন না ।


2
সত্য নয়, যদি কোনও সাদা স্থান প্রয়োজন হয় তবে আপনার এইচটিটিপি সার্ভারটি নষ্ট হয়ে গেছে। এছাড়াও আপনার দুটি ধরণের একটি টাইপ এবং তারপরে টোকেন প্রয়োজন need
অ্যালেক্সিস উইল্ক

5

কলটি করার সময় যদি আপনার কাছে টোকেন না থাকে, আপনাকে দুটি কল করতে হবে, একটি টোকেন পেতে এবং অন্যটি টোকেনটির ফর্মটি সাড়া দেওয়ার জন্য, প্রতিক্রিয়াটি মনোযোগ দিন

গ্রেপ টোকেন | কাট-ডি, -ফ 1 | কাট-ডি \ "-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 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.