সিআরএল সঠিকভাবে ব্যবহার করে কীভাবে বেসিক HTTP প্রমাণীকরণের সংজ্ঞা দেওয়া যায়?


161

আমি অ্যাজিগিলিটি ( এপিগিলিটি ডকুমেন্ট -> আরআরটি সার্ভিস টিউটোরিয়াল ) শিখছি এবং সিআরএল এর মাধ্যমে বেসিক প্রমাণীকরণের সাথে একটি পোস্ট অনুরোধ প্রেরণের চেষ্টা করছি:

$ curl -X POST -i -H "Content-Type: application/hal+json" -H "Authorization: Basic YXBpdXNlcjphcGlwd2Q=" http://apigilityhw.sandbox.loc/status

YXBpdXNlcjphcGlwd2Q=আমার শংসাপত্রগুলির সাথে বেস 64 এনকোডড স্ট্রিং apiuser:apipwd। শংসাপত্রগুলি /data/htpasswd( apiuser:$apr1$3J4cyqEw$WKga3rQMkxvnevMuBaekg/) এ সংরক্ষণ করা হয় ।

দেখতে এমন দেখাচ্ছে:

HTTP/1.1 401 Unauthorized
Server: nginx/1.4.7
Date: Mon, 22 Sep 2014 07:48:47 GMT
Content-Type: application/problem+json
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.5.12-1~dotdeb.1
WWW-Authenticate: Basic realm="api"

এখানে ভুল কোথায়? এটি কিভাবে কাজ করবেন?

উত্তর:


291
curl -u username:password http://
curl -u username http://

ডকুমেন্টেশন পৃষ্ঠা থেকে:

-u, --user <ব্যবহারকারী: পাসওয়ার্ড>

সার্ভার প্রমাণীকরণের জন্য ব্যবহারকারীর নাম এবং পাসওয়ার্ড নির্দিষ্ট করুন। ওভাররাইড -n, --netrc এবং --netrc- alচ্ছিক।

আপনি যদি কেবল ব্যবহারকারীর নাম নির্দিষ্ট করে থাকেন তবে কার্ল একটি পাসওয়ার্ডের জন্য অনুরোধ করবে।

ব্যবহারকারীর নাম এবং পাসওয়ার্ডগুলি প্রথম কোলনে বিভক্ত হয়, যা এই বিকল্পের সাথে ব্যবহারকারীর নামটিতে কোনও কলোন ব্যবহার করা অসম্ভব করে তোলে। পাসওয়ার্ডটি এখনও করতে পারে।

উইন্ডোজ ভিত্তিক সার্ভারের সাহায্যে কার্বেরোস ভি 5 ব্যবহার করার সময় আপনার সার্ভারটি সফলভাবে একটি কার্বেরোস টিকিট পাওয়ার জন্য উইন্ডোজ ডোমেন নামটি ব্যবহারকারীর নামের সাথে অন্তর্ভুক্ত করা উচিত। আপনি যদি তা না করেন তবে প্রাথমিক প্রমাণীকরণের হ্যান্ডশেক ব্যর্থ হতে পারে।

এনটিএলএম ব্যবহার করার সময়, ডোমেন ছাড়াই ব্যবহারকারীর নামটি কেবলমাত্র ব্যবহারকারী নাম হিসাবে নির্দিষ্ট করা যেতে পারে, উদাহরণস্বরূপ যদি আপনার সেটআপে কোনও ডোমেইন এবং বন থাকে forest

ডোমেন নাম নির্দিষ্ট করতে ডাউন-লেভেল লগন নাম বা ইউপিএন (ব্যবহারকারী প্রধান নাম) ফর্ম্যাট ব্যবহার করুন। উদাহরণস্বরূপ, যথাক্রমে EXAMPLE \ ব্যবহারকারী এবং user@example.com।

আপনি যদি উইন্ডোজ এসএসপিআই-সক্ষম কার্ল বাইনারি ব্যবহার করেন এবং কার্বেরোস ভি 5, নেগোসিয়েট, এনটিএলএম বা ডাইজেস্ট প্রমাণীকরণ সম্পাদন করেন তবে আপনি এই বিকল্পটি দিয়ে একটি একক কোলন নির্দিষ্ট করে আপনার পরিবেশ থেকে ব্যবহারকারী নাম এবং পাসওয়ার্ড নির্বাচন করতে কার্লকে বলতে পারেন: "-u:" ।

এই বিকল্পটি কয়েকবার ব্যবহার করা হলে, সর্বশেষটি ব্যবহৃত হবে।

http://curl.haxx.se/docs/manpage.html#-u

নোট করুন যে --basicএটি ডিফল্ট হওয়ায় আপনার পতাকা লাগবে না ।


14
যদি আপনার পাসওয়ার্ডে কিছু বিশেষ অক্ষর থাকে? বা @ এরপরে আপনাকে এটিকে একক টিক্সে রাখতে হবে। কার্ল-ইউ 'ব্যবহারকারীর নাম:? পি @ এসএসওয়ার্ড' http: //
মিরকো এবার্ট

2
তবে এই প্রকৃত অনুরোধটি দেখতে কেমন? আমি অনেক লোককে কার্ল দিয়ে পরীক্ষা করার মতো মনে করি তবে তারা যে কোনও ভাষাতেই কোড ect লিখুন। - ব্যবহারকারীর তথ্য একটি শিরোলেখ হিসাবে পাঠানো হয়? যদি তাই হয় তবে সেই
শিরোনামটি

পোস্টম্যানের গৌতমকথরোটিয়ায় একটি অনুরোধের অনুমোদনের ট্যাবে একটি বেসিক লেখার বিকল্প রয়েছে, এটি আপনার জন্য এই অনুমোদনের শিরোনাম .োকাবে।
কাইল ক্যালিকা-সেন্ট

1
@ ভার্টি 100 আপনি অনুরোধের সামগ্রীগুলি দেখতে কার্ল সহ -v পতাকা ব্যবহার করতে পারেন।
Zach

17

শিরোনাম হিসাবে

AUTH=$(echo -ne "$BASIC_AUTH_USER:$BASIC_AUTH_PASSWORD" | base64 --wrap 0)

curl \
  --header "Content-Type: application/json" \
  --header "Authorization: Basic $AUTH" \
  --request POST \
  --data  '{"key1":"value1", "key2":"value2"}' \
  https://example.com/
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.