কোথায় এপিআই কী স্থাপন করবেন: একটি কাস্টম স্কিম সহ একটি কাস্টম এইচটিটিপি শিরোনাম ভিএস অনুমোদনের শিরোনাম


18

আমি একটি API কী এর মাধ্যমে অনুমোদন / প্রমাণীকরণ ব্যবহার করে একটি REST এপিআই ডিজাইন করছি।

আমি এটির জন্য সর্বোত্তম জায়গাটি কী তা নির্ধারণ করার চেষ্টা করেছি এবং জানতে পেরেছি যে অনেকে একটি কাস্টম এইচটিটিপি শিরোনাম যেমন ProjectName-Api-Key, যেমন:

ProjectName-Api-Key: abcde

তবে এটি Authorizationকাস্টম স্কিম সহ শিরোনামটি ব্যবহার করা সম্ভব এবং আদর্শগতভাবে সঠিক , যেমন:

Authorization: ApiKey abcde

অন্যদিকে, আমি একটি বিবেচনা পেয়েছি যে একটি কাস্টম অনুমোদন প্রকল্পটি কিছু ক্লায়েন্টদের দ্বারা অপ্রত্যাশিত এবং অসমর্থিত হতে পারে এবং যাইহোক কাস্টম কোডের দিকে পরিচালিত করে, তাই ক্লায়েন্টদের সম্পর্কে কোনও প্রত্যাশা না থাকায় একটি কাস্টম শিরোনাম ব্যবহার করা ভাল।

আপনি কোন উপায় একটি API কী প্রেরণ করতে পছন্দ করবেন?


আমার গাইডেন্সির অধীনে প্রকল্পগুলি Authorization: Bearer <token>শিরোনাম ব্যবহার করে এবং এটির সাথে কোনও একক সমস্যা ছিল না। টোকেনগুলি জেডব্লিউটি এস।
অ্যান্ডি 15

1
@ ডেভিডপ্যাকার যেমনটি আমি বুঝতে পারি, Bearerস্কিমটি oAuth2 এর সাথে একচেটিয়াভাবে ব্যবহৃত হয়। এটি oAuth থেকে আলাদাভাবে প্রয়োগ করা এটির অপব্যবহার বলে মনে হচ্ছে। ওআউথ না থাকলে এই স্কিমটি ব্যবহার করা কেন সঠিক? যাইহোক, আমার API এর জন্য এক ধরণের অনুমোদনের চয়ন করতে আমার সমস্যা হয়েছিল। এপিআই কেবল একটি বিশ্বস্ত পরিষেবার জন্য উপলব্ধ থাকবে, তাই আমি ক্লায়েন্টের শংসাপত্রগুলি OAuth2 এর প্রবাহ তদন্ত করেছি এবং আমার ক্ষেত্রে অপিকির সাথে তুলনা করে কোনও সুবিধা পাইনি।
রোমানজি

@ ডেভিডপ্যাকার তারপরে আমি বুঝতে পেরেছিলাম, অ্যাপিকির অনুমোদনটি একটি বৈধ oAuth বাস্তবায়ন হিসাবে বিবেচিত হতে পারে যদি কোনও মেয়াদোত্তীর্ণ সময় ব্যতিরেকে ক্লায়েন্টকে মঞ্জুর করা ApiKeyহিসাবে ব্যাখ্যা করা হয় Access Token। এটি একধরনের দার্শনিক দিক, আমি যদি আমার কেসকে সহজ ভাষায় বর্ণনা করা যায় এবং জটিলটিকে "এপিকি" বলার সিদ্ধান্ত নিয়েছি তবে জটিল সংজ্ঞা না আনার সিদ্ধান্ত নিয়েছি। যদি আপনার প্রোটোকল oAuth স্ট্যান্ডার্ড প্রয়োগ করে, আমি ব্যবহারে সম্মত হতে পারি Bearer, তবে এটি হয় না, আমার ধারণা এই স্কিমটি প্রয়োগ করা যাবে না।
রোমানজি

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

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

উত্তর:


13

আপনি যদি অনুমোদন ব্যবহার করেন তবে সামঞ্জস্য বজায় রাখুন

অনেকেই এই তর্ক করবে নিম্নলিখিত (অপ্রয়োজনীয় অত্যন্ত দীর্ঘ আগে আমি তাদের সঙ্গে একমত হবে এবং ) কিন্তু, এই দিন, যদি আমরা ব্যবহার Authorizationহেডার আমরা জানাতে হবে টাইপ কারণ, টোকেন এর API কীগুলির স্ব-বর্ণনামূলক কোনটাই নয়

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

Authorization: Basic xxxx
Authorization: Digest xxxx
Authorization: Bearer xxxx
Authorization: ApiKey-v1 xxxx
Authorization: ApiKey-v2 xxxx

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

উদ্বেগ

আমার নিজের প্রকল্পগুলি বাস্তবায়নের জন্য যে সমস্যার মুখোমুখি হয়েছিলাম, মন্তব্যগুলির মতো।

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

ক্লায়েন্টদের বলুন , লাইব্রেরি বলুন , ফ্রেমওয়ার্ক করুন, প্রক্সি বিপরীত করুন

সুবিধাদি

একটি গুরুত্বপূর্ণ সুবিধা ক্যাশে হয়। ভাগ না হওয়া ক্যাশেগুলি শিরোনামকে ক্যাশে করবে না (এবং এটি অবশ্যই ভাল) আপনি অন্যথায় না বললে।

তাই অনুমোদন বা কাস্টম শিরোনাম?

আমার অভিজ্ঞতা অনুসারে, আমার নিজের Authorizationপ্রকল্পটি বাস্তবায়ন আমাকে কাস্টম অনুমোদনের শিরোনামগুলি প্রয়োগ করার চেয়ে খুব বেশি পরিমাণে কাজ (বা আরও) নিয়েছে, যখন আমি কাস্টম শিরোনাম ব্যবহার করেছি তখন ডিজাইনের আরও স্বাধীনতা এবং ক্যাশে আরও নিয়ন্ত্রণের সামান্য পার্থক্য রয়েছে। নেটওয়ার্কটি টপোলজি নির্বিশেষে বেশিরভাগ সময় আমার সার্ভারে কলগুলি আরও ডিটারমিনিস্টিক (যখন এটি ট্র্যাকিং এবং টেস্টিংয়ের ক্ষেত্রে আসে তখন গুরুত্বপূর্ণ) ক্যাপচার Cache-controlস্থাপন করার no-cacheবা সেট করার বেশিরভাগ সময় আমি নির্বোধ no-store


1: আমি এপিআই কী সম্পর্কিত এই উত্তরটি খুব স্পষ্ট বলে মনে করি


4
ব্যবহার X-: 2012 এ অনুমোদিত নয় stackoverflow.com/a/3561399/923720
Darkhogg

1
অপস! আমি জানতাম না। সম্পাদিত এবং স্থির।
লাইভ

এই প্রশ্নের আগে আমি ভেবেছিলাম বেশিরভাগ লোকেরা এপিআই কীটি ইউআরএলে রাখে, তবে এটি লুকানোর জন্য এইচটিটিপিএস ব্যবহার করে। কিছু বিকল্প দেখতে ভাল। : উদাহরণস্বরূপ, Contentful অনুমোদন বা কোয়েরি pamameter পারবেন contentful.com/developers/docs/references/content-delivery-api/...
user949300

1
@ ব্যবহারকারী949300 ... একটি এনক্রিপ্ট করা শেয়ার্ড সিক্রেট (যেমন এসএসএল-এর ইউরিতে এপিআই কী) ব্যবহার করা অবশ্যই কোনও কিছুর চেয়ে স্পষ্টতই সুরক্ষিত তবে এটি যদি বাধা হয়ে থাকে এবং সনাক্তকরণের জন্য কোনও গ্রানুলারিটি সরবরাহ না করে তবে সহজেই স্পোফিকযোগ্য। আমি মেশিন টু মেশিন যোগাযোগ ব্যতীত অন্য কোনও কিছুর জন্য এপিআইকিস ব্যবহার করি নি যেখানে বিশ্বাসী পক্ষগুলি এবং সেই অংশীদারি গোপনীয়তার সাথে কাজ করার জন্য অনুমোদিত শ্বেত তালিকাভুক্ত মেশিন পরিচয়ের মধ্যে ভাগ করা গোপনীয়তার সাথে আমি মিলে যাচ্ছি। মেশিন টু মেশিন সংযুক্ত হওয়ার পরে, মানব অপারেটর অন্য উপায় ব্যবহার করে প্রমাণীকরণ করে।
কে। অ্যালান বেটস

@K। অ্যালান বেটস আমার এপিআই এর বেশিরভাগ ইন্টারঅ্যাকশনগুলি অপেক্ষাকৃত "গুরুত্বহীন" জিনিসের জন্য যেমন জিওকোডিংয়ের মুক্ত স্তর, আবহাওয়ার প্রতিবেদন এবং এর মতো, যেখানে মারাত্মক ব্যবহারকারীর গোপনীয়তার চেয়ে রেট সীমাবদ্ধতার জন্য আরও বেশি key সুতরাং, ওপি হিসাবে, কী স্তরের সুরক্ষা প্রয়োজন তা নির্ভর করে।
user949300
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.