বেসিক এইচটিটিপি এবং বহনকারী টোকেন প্রমাণীকরণ


115

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

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

curl -i http://dev.myapp.com/api/users \
  -H "Authorization: Basic Ym9zY236Ym9zY28=" \
  -H "Authorization: Bearer mytoken123"

আমি উদাহরণস্বরূপ আমার আইপি-র জন্য এইচটিটিপি-প্রমাণীকরণ অক্ষম করতে পারি তবে আমি সাধারণত গতিশীল আইপি সহ বিভিন্ন পরিবেশে কাজ করি, এটি কোনও ভাল সমাধান নয়। আমি কি কিছু মিস করছি?


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

1
তুমি কি কখনো এইটা বের করেছ? আমি একটি অনুগ্রহ যোগ করছি
অ্যাডাম ওয়েট

4
হ্যালো অ্যাডাম, দুর্ভাগ্যক্রমে নয়। টোকেনের জন্য আমার অনুমোদনের শিরোনামকে "x-auth" এ পরিবর্তন করে যা প্রমাণীকরণের কাজ করে এখন আমি তা পরিবর্তন করেছি যা মানক শিরোনাম নয়।
আজঙ্গেক

1
আমার nginx সার্ভার এমনকি 2 অনুমোদনের শিরোনাম গ্রহণ করবে না। এটি a 400 Bad request। সিলি।
রুডি

1
আপনার এপিআই টোকেনের জন্য একটি কাস্টম শিরোনাম ব্যবহার করে কী হয়েছে? আমি দেখতে পাচ্ছি না কেন এখানকার লোকেরা তাদের বিকাশ / পর্যায়ক্রমে সার্ভারগুলি প্রিয় চোখ থেকে দূরে রাখতে এইচটিটিপি বেসিক অ্যাথ ব্যবহার করে "স্ক্র্যাপ" করেছে।
সুনীল D.

উত্তর:


68

ইউআরএলটিতে মৌলিক প্রমাণীকরণের জন্য এটি ব্যবহার করে দেখুন:

curl -i http://username:password@dev.myapp.com/api/users -H "Authorization: Bearer mytoken123"
               ^^^^^^^^^^^^^^^^^^

যদি উপরের কোনওটি কাজ না করে তবে আপনার এটির কোনও সম্পর্ক নেই। সুতরাং নিম্নলিখিত বিকল্প চেষ্টা করে দেখুন।

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

curl -i http://dev.myapp.com/api/users \
  -H "Authorization: Basic Ym9zY236Ym9zY28=" \
  -H "Application-Authorization: mytoken123"

লক্ষ্য করুন আমি শিরোলেখ পরিবর্তন করেছি Application-Authorization। সুতরাং আপনার অ্যাপ্লিকেশন থেকে সেই শিরোলেখের নিচে টোকেন ধরুন এবং আপনার যা করা দরকার তা প্রক্রিয়া করুন।

আর একটি জিনিস যা আপনি করতে পারেন তা হ'ল প্যারামিটারগুলির tokenমধ্য দিয়ে পাস করার জন্য POSTএবং সার্ভার দিক থেকে প্যারামিটারের মানটি ধরে নেওয়া। উদাহরণস্বরূপ কার্ল পোস্ট প্যারামিটারের সাথে টোকেন পাস করা:

-d "auth-token=mytoken123"

1
হ্যালো সবুজ, আপনি কীভাবে ব্যবহারকারীর নাম এবং পাসওয়ার্ডটি পাস করবেন তা এই সমস্যা নয় তবে একাধিক অনুমোদনের শিরোনাম কেবল কাজ করবে না। চশমাটি দেখে ( ietf.org/rfc/rfc2617.txt ) আমি দেখতে পাচ্ছি যে এটি সম্ভব হওয়া উচিত। তবে যেমনটি বলা হয়েছে "" ব্যবহারকারী এজেন্ট সবচেয়ে শক্তিশালী লেখক-প্রকল্পের সাথে চ্যালেঞ্জগুলির একটি ব্যবহার করা পছন্দ করে এবং সেই চ্যালেঞ্জের উপর ভিত্তি করে ব্যবহারকারীর কাছ থেকে শংসাপত্রগুলির জন্য অনুরোধ করে So "সুতরাং আমি 2 দিন আগে লিখেছি যেমন আমার পাস করার দরকার ছিল একটি অ-মানক শিরোনামের প্রতি টোকেন যা আপনি অ-স্ট্যান্ডার্ড আর্কিটেকচারের সাথে ডিল করার সময় একেবারে ঠিক।
আজ্নজেক

5
আপনি কাজটি সম্পাদন করার সময় @ আজঞ্জেক কার্ল উভয় অনুমোদনের শিরোনাম প্রেরণ করে। আপনার সার্ভারের শেষ থেকে এটি হ্যান্ডেল করা দরকার। প্যারাম সহ উভয় শিরোনাম দিয়ে আপনার কার্ল কমান্ডটি চালান -v। আপনি এটি Authorization: Basic Ym9zY236Ym9zY28=, Authorization: Bearer mytoken123শিরোনাম অনুরোধ শিরোনাম পাবেন। আপনার সার্ভারের শেষ থেকে, যদি আপনি পরীক্ষা করেন তবে আপনি দেখতে পাচ্ছেন যে আপনার কাছে Authorization: Basic Ym9zY236Ym9zY28=, Bearer mytoken123কমা দ্বারা পৃথকভাবে অনুমোদনের শিরোনাম রয়েছে । সুতরাং, আমি আপনাকে বিকল্প পরামর্শ দেওয়া উচিত।
সবুজ হাসান

34

মানক ( https://tools.ietf.org/html/rfc6750 ) বলছেন আপনি ব্যবহার করতে পারেন:

  • ফর্ম- এনকোডড বডি প্যারামিটার: অনুমোদন: বহনকারী মাইটোকেন 123
  • ইউআরআই ক্যোয়ারী প্যারামিটার: অ্যাক্সেস_ টোকেন = মাইটোকেন 123

সুতরাং অনেক বিয়ার টোকেনকে ইউআরআই দিয়ে পাস করা সম্ভব তবে এটি করা নিরুৎসাহিত করা হয় (স্ট্যান্ডার্ডের 5 নং অংশটি দেখুন)।


4

যদি আপনি মাঝখানে nginx এর মতো বিপরীত প্রক্সি ব্যবহার করে থাকেন তবে আপনি একটি কাস্টম টোকেন যেমন সংজ্ঞায়িত করতে পারেন X-API-Token

এনগিনেক্সে আপনি এটিকে প্রবাহের প্রক্সি (আপনার বাকী এপিআই) কেবল লেখার জন্য আবার লিখতে হবে:

proxy_set_header Authorization $http_x_api_token;

... যখন এনজিএনএক্স এইচটিটিপি অ্যাথ পরীক্ষা করতে মূল অনুমোদনের শিরোনাম ব্যবহার করতে পারে।


3

আমার অনুরূপ সমস্যা ছিল - ডিভাইসে ডিভাইস এবং ব্যবহারকারীকে প্রমাণীকরণ করুন। আমি একটি Cookieশিরোলেখ পাশাপাশি একটি Authorization: Bearer...শিরোনাম ব্যবহার করেছি ।


ডাউনটা কেন স্পষ্ট নয়। কোনও সম্পর্কিত সমস্যার উত্তর খুঁজতে গিয়ে আমি এই প্রশ্নটি পেরিয়ে এসেছি - এটিই আমি এর সমাধান করেছি। Cookieহেডার ইতিমধ্যে ঘন ঘন প্রমাণীকরণের জন্য ব্যবহার করা হয়।
আইরিডইন

2

curl --anyauth

কার্লকে নিজেই প্রমাণীকরণের পদ্ধতিটি বের করার জন্য বলে এবং রিমোট সাইটটি সমর্থনের জন্য দাবি করা সর্বাধিক সুরক্ষিত একটি ব্যবহার করে। এটি প্রথমে একটি অনুরোধ করে এবং প্রতিক্রিয়া-শিরোনামগুলি পরীক্ষা করে করা হয়, সম্ভবত এটি কোনও অতিরিক্ত নেটওয়ার্ক রাউন্ড-ট্রিপ প্ররোচিত করে। এটি একটি নির্দিষ্ট প্রমাণীকরণ পদ্ধতি সেট করার পরিবর্তে ব্যবহৃত হয়, যা আপনি --basic, --digest, --ntlm এবং --negotiate দিয়ে করতে পারেন।


1

বিকাশ সার্ভারে API গুলি পরীক্ষার জন্য আরও একটি সমাধান রয়েছে।

  • HTTP Basic Authenticationশুধুমাত্র ওয়েব রুটের জন্য সেট করুন
  • প্রমাণীকরণ থেকে মুক্ত সমস্ত API রুট ছেড়ে দিন

ওয়েব সার্ভার কনফিগারেশন এর জন্য nginxএবং Laravelএটি হতে হবে:

    location /api {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location / {
        try_files $uri $uri/ /index.php?$query_string;

        auth_basic "Enter password";
        auth_basic_user_file /path/to/.htpasswd;
    }

Authorization: Bearer ওয়েব ক্রলার এবং অন্যান্য অযাচিত দর্শকদের বিরুদ্ধে ডেভলপমেন্ট সার্ভারকে রক্ষা করার কাজটি করবে।


0

এনজিনেক্সের সাহায্যে আপনি উভয় টোকেনকে এটি প্রেরণ করতে পারেন (এটি স্ট্যান্ডার্ডের বিপরীতে হলেও):

Authorization: Basic basic-token,Bearer bearer-token

এটি যতক্ষণ না বেসিক টোকেনটি প্রথম হয় - এনগিনেক্স এটিকে সফলভাবে অ্যাপ্লিকেশন সার্ভারে ফরোয়ার্ড করে।

এবং তারপরে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনার অ্যাপ্লিকেশন সঠিকভাবে উপরের স্ট্রিং থেকে বেয়ারারকে বের করতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.