تفاوت بین کلیدهای API و نشانه های API

ساخت وبلاگ

The Difference Between API Keys and API Tokens

کلیدهای API و نشانه های API اغلب به عنوان مترادف مورد بحث قرار می گیرند ، اما در عمل ، آنها بسیار متفاوت هستند. در زیر ، خواهیم دید که چگونه این دو فناوری با هم تفاوت دارند و در نظر دارند که از کجا بهترین استفاده می شوند.

کلید API چیست؟

یک کلید API یک متن ساده و در عین حال قدرتمند است. هر کلید برای یک موجود خاص تولید می شود و به عنوان کلید پادشاهی برای آن نهاد عمل می کند. هر بار که یک تماس به API برقرار می شود ، کلید به اشتراک گذاشته می شود و به طور مشابه با نام کاربری و جفت رمز عبور کار می کند. از آنجا که این کلیدها بی نظیر هستند ، آنها به عنوان شناسه ای عمل می کنند که می تواند به سایر لایه های امنیتی ، روال شناسایی و رویکردهای محدود کننده نرخ متصل شود.

در کاربرد ، کلیدها به طور معمول به طور مستقیم به یک دستگاه خاص متصل می شوند و آنها را مشخص نمی کنند که چه کسی از کلید استفاده می کند به همان اندازه که دستگاه درخواست می کند. به همین دلیل ، غیر معمول نیست که یک کاربر یک کلید برای یک دستگاه تلفن همراه ، یک کلید برای رایانه رومیزی یا یک کلید برای یک API خارجی داشته باشد ، حتی اگر همه این دستگاه ها مستقیماً با همان API ارتباط برقرار کنند.

لازم به ذکر است که کلیدهای API اغلب به عنوان یک لایه امنیتی مستقل رفتار می شوند. همانطور که قبلاً بحث کردیم ، این استفاده نادرست از یک کلید API است و باید از آن جلوگیری کرد. کلیدهای API هرگز به عنوان یک ویژگی امنیتی کار نمی کردند - منظور آنها به عنوان یک مورد شناسایی بود. در حالی که شناسایی در واقع می تواند در سایر سیستم های امنیتی نقشی داشته باشد ، داشتن کلیت یک وضعیت امنیتی در شناسایی ساده نادرست و خطرناک است. در عوض ، کلیدهای API باید در یک سیستم مجوز و احراز هویت بسیار بزرگتر نقش کمی داشته باشند که قوی ، تطبیقی و به طور معمول آزمایش شوند.

یک مثال API Key می تواند به شرح زیر باشد.

کلید: الف9nibdnaoks97028jlf. ains9نیکمئو 

نشانه API چیست؟

یک نشانه API تا حدودی پیچیده تر است. نشانه های API همچنین رشته های ساده کد هستند ، اما به طور معمول حاوی داده های بیشتری در مورد کاربر هستند. توکن ها می توانند خاص دستگاه ، خاص جریان یا خاص برای هر تعداد از حالت های متغیر باشند. این نشانه ها اغلب حاوی یک ساختار خاص - هدر ، بار بار و امضای - هستند و توسط یک مقام برای کنترل دسترسی تولید می شوند.

نشانه های API همچنین می توانند عملکرد خود را از طریق برنامه های مختلف منحصر به فرد گسترش دهند. نشانه های تک علامت (SSO) یک نمونه خوب است ، جایی که می توان به یک نشانه واحد دامنه کاربردی داده شد و در نتیجه در چندین API استفاده شود. این API ها با سیستم صدور مشترک و احراز هویت و مجوز قابل قبول ، تشکیل یک دامنه یا فدراسیون موافق هستند. در این گروه از API ها که در مورد روش مشترک موافق هستند ، همان نشانه SSO به عنوان معتبر پذیرفته می شود و برای باز کردن دسترسی مداوم به صورت جداگانه یا دسترسی متقابل استفاده می شود.

در زیر مثالی است که توسط مستندات Auth0 ارائه شده است.

<"ALG": "Rs256", "تایپ": "JWT"> . <"ISS": "https://example. auth0. com/", "AUD": "https://api. example. com/calendar/v1/", "زیر": "USR_123", "محدوده": "بخوانید", "IAT": 1458785796, "Exp": 1458872196> 

شباهت بین کلیدهای API و نشانه های API

بخشی از سردرگمی پیرامون کلیدهای API و نشانه های API از این واقعیت ناشی می شود که حداقل روی کاغذ ، ممکن است بسیار شبیه به یکدیگر باشند. این در درجه اول به دلیل استفاده روزمره آنها است ، بنابراین بیایید بررسی کنیم که این استفاده مشترک ممکن است به نظر برسد.

کلیدهای API اغلب برای شناسایی استفاده می شوند و از این طریق بسیار شبیه به استفاده از برخی از نشانه ها هستند. توکن ها ممکن است برخی از قابلیت های شناسایی را به عنوان بخشی از استفاده اصلی خود به همراه داشته باشند ، و بنابراین برای کاربر خارج ، اینها در عمل بسیار مشابه هستند. یک کلید API کاربر را از طریق یک جفت اثبات هویت (جفت نام کاربری/رمز عبور ، به طور معمول) مشخص می کند. به همین ترتیب ، یک نشانه API ممکن است این اطلاعات را به عنوان روشی برای شناسایی حمل کند.

شباهت ها نیز به شکل عملکرد بصری آمده است. از آنجا که کلیدها و نشانه ها ، به ساده ترین شکل ، فقط رشته های کد هستند ، یک ناظر ممکن است به این دو نگاه کند و فکر کند که قابل تعویض هستند. در حالی که برخی از کلیدهای API پیچیده تر هستند ، ساده ترین نشانه های API می توانند مانند پیچیده ترین کلیدهای API ظاهر شوند.

تفاوت بین کلیدهای API و نشانه های API

شباهت بصری به کنار ، کلیدهای API و نشانه های API در واقع چیزهای بسیار متفاوتی هستند. نشانه های API اغلب حاوی قطعات بیشتری مانند هدر و بار هستند ، در حالی که کلیدهای API به طور معمول ساده هستند. این دو مورد برای انجام کارهای بسیار متفاوت طراحی شده اند.

کلیدهای API به منظور شناسایی برنامه ها هستند ، و این تقریباً بسیار است. علیرغم تمایل بسیاری از توسعه دهندگان تازه کار به استفاده از کلیدهای API به عنوان نوعی تأیید اعتبار و مجوز ، کلیدهای API فقط قرار است برای شناسایی باشند. سردرگمی ناشی از این واقعیت است که کلیدهای API اغلب به عنوان بخشی از یک راه حل امنیتی جامع تر استفاده می شوند. در این استفاده ، آنها اغلب قابل مشاهده ترین مؤلفه آن رویکرد امنیتی هستند.

در مورد مجوز راننده فکر کنید - خود مجوز به عنوان ضمانت حق رانندگی وسیله نقلیه نیست ، بلکه راننده را مجوز می داند. سیستم صدور مجوز خود همان چیزی است که حق رانندگی را می دهد. در همین راستا ، یک کلید API ممکن است به عنوان نقطه ورود به کاربر تأیید و مجاز باشد ، اما فقط به همان اندازه که دستگاه را وارد سیستم می کند ، که در واقع مکانیسم امنیتی را انجام می دهد.

از طرف دیگر ، نشانه ها تمایل دارند داده های قابل توجهی بیشتر با آنها داشته باشند. توکن ها برای شناسایی کاربران طراحی شده اند و با این کار ، اغلب اطلاعات اضافی را برای مجوز حمل می کنند. این نشانه ها به طور معمول از طریق یک جریان تولید توکن داخلی به API اعطا می شوند و به طور معمول نه تنها شناسایی منبع - شبیه به یک کلید API - بلکه سطح مجوز و اعتماد به کاربری که دارای نشانه است ، جفت می شوند.

لازم به ذکر است که توکن ها با خود جریان بسیار پیچیده تری نسبت به کلیدها دارند. معمولاً یک کلید بسیار آزادانه اعطا می شود - از این گذشته ، تنها کاری که یک کلید واقعاً انجام می دهد ، به عنوان یک شکل هویت است. از طرف دیگر ، توکن ها ، و به ویژه در OAUTH ، روند اعطای و انقضا بسیار پیچیده تری را انجام می دهند و به طور معمول تعامل و محدودیت های پیچیده تری دارند. جریان ها با نحوه اعطای آنها تعریف می شوند - شما اغلب اصطلاحاتی مانند "جریان ضمنی" یا "جریان دستگاه" را می شنوید که نحوه اعطای و استفاده از این نشانه ها را تعریف می کند.

تفاوت اصلی بین کلیدهای API و نشانه های API را می توان به شرح زیر تصور کرد: کلیدهای API منبع نهاد درخواست کننده را تعریف می کنند ، در حالی که نشانه های API کاربر و حقوق آنها را شناسایی می کنند.

پیاده سازی های عملی

چند مورد وجود دارد که باید هنگام انتخاب بین کلیدهای API و نشانه ها در نظر بگیرید.

مهمترین و مهمتر از همه ، کلیدهای API معمولاً نسبت به نشانه ها امنیت کمتری دارند. چند دلیل وجود دارد که این موضوع تا حد زیادی صادق است ، اما شاید مهمترین آن این باشد که کلیدهای API معمولاً در کنترل های امنیتی خود دانه ای کمتری دارند. بنابراین از دست دادن یک کلید می تواند به معنای قرار گرفتن در معرض کلیت یک API باشد. در حالی که می توانید از نظر تئوری نشانه های مختلفی را برای دستگاه های مختلف صادر کنید و برخی از قابلیت های محدود را بر اساس عبور کلید API در هدر انجام دهید ، این یک خطر دیگر را ایجاد می کند - کلیدهای API به طور معمول در درخواست ها تعبیه شده اند ، در نتیجه گرفتن آن بسیار آسان تر می شوددر ترانزیت

در حالی که استاندارد پیشنهادی فعلی در واقع عبور از این کلیدها در عنوان مجوز است ، اما اغلب خود را در مکان های دیگر می یابد. این می تواند حتی برای توسعه دهندگان که از این مشکل خودداری می کنند ، یک مشکل باشد. شما فقط می توانید آنچه را که API شما انجام می دهد کنترل کنید ، و این با سایر API ها که این کلید را از طریق متن ساده یا محتوای بدن منتقل می کنند ، مشکل ساز است.

از طرف دیگر ، یک نشانه API به طور معمول بسیار گرانول تر است و باعث محدودیت امنیت احتمالی یک نشانه از بین می رود. با این حال ، این با هزینه ای همراه است که نشانه ها بسیار پیچیده تر و بزرگتر هستند. به همین دلیل ، تحمل نشانه های تمام عیار در محیط های محاسباتی محدود مانند اینترنت اشیاء دشوار است ، اگرچه پیشرفت در نشانه های تحمل و سایر جریان های ضمنی به طرز چشمگیری این روند نزولی بالقوه را در طی چند سال گذشته کاهش داده است.

همچنین لازم به ذکر است که کلیدهای API نسبت به نشانه ها کمتر استاندارد هستند. یک کلید به طور معمول داخلی تولید می شود ، و در حالی که توسعه دهندگان API می توانند با استفاده از رویکردهای اختصاصی یک سیستم امنیتی قوی ایجاد کنند ، واقعیت این است که بسیاری از استانداردهای منبع باز و مشترک در حال حاضر در اطراف نشانه هایی وجود دارد که قبلاً این مزیت را ارائه می دهند. اتخاذ چیزی مانند OAUTH باعث می شود یک راه حل امن تر از ساختن یک پوسته اختصاصی در اطراف کلیدهای داخلی تولید شود.

نتیجه

کلیدهای API جایگاه خود را در توسعه مدرن دارند ، اما آنها اغلب به چنین حدی عادت می کنند و به گونه ای که هرگز برای استفاده از آنها طراحی نشده اند. استانداردهای باز و راه حل های منبع باز به نشانه های API ، که برای تأمین API ها و اطمینان از احراز هویت و مجوز کافی هستند.

آیا چیزی را از دست دادیم؟در قسمت نظرات پایین ما را آگاه کنید!

بازار رمزارزها...
ما را در سایت بازار رمزارزها دنبال می کنید

برچسب : نویسنده : محمود کیانوش بازدید : 27 تاريخ : پنجشنبه 9 شهريور 1402 ساعت: 20:16