نحوه ایجاد وب سرویس با API باز و آزاد
سلام.
دوستان بنده در حال ایجاد یک سرویس با API باز و آزاد هستم.
بطوری که مثل تلگرام و سرویس های مشابه بشه با هر دستگاه و هر برنامه ای به این سرویس وصل شد.
سرویس API رو طراحی کردم و در حال پیاده سازی هستم.
تنها سوالی که برام پیش اومده اینه که چطوری تلگرام و سرویس های مشابه API KEY ارائه میدن و چطور از سمت سرور برنامه مورد نظر احراز هویت میشه؟
مثلا وقتی یه برنامه نویس برای برنامه ای که نوشته API KEY میسازه و تو برنامش ثبت میکنه چطور از سمت سرور احراز هویت و تایید میشه که این کلید برای همین برنامه هست؟
و چطور این کلید از بقیه (کسانی که سورس رو چک میکنند) مخفی میمونه؟
اگه بقیه از این کلید استفاده کنند چطور میشه فهمید؟
4 پاسخ
@مهدی عادلی
ممنون بابت پاسختون.
این درسته که ما به هر برنامه یک کلید API میدیم؟
اگه آره پس این کلید API بصورت خام و یا کد شده تو برنامه قرار میگیره و همینطور بصورت خام و یا کد شده باید به سرور ارسال بشه بهنگام وصل شدن به سرور و یا لاگین یوزر و یا ...
حالا اگه قراره تو برنامه قرار بگیره پس با چک کردن سورس قابل خوندن و نمایش هست اگر اشتباه نکنم؟!
سرویس های مشابه مانند تلگرام چطور کلید ها رو تایید میکنن؟ (اگر اطلاع دارید)
برای تولید این کلید ها می توان از GUID استفاده کرد.
مکانیزم تولید کلید ها هم باید به روش خاصی باشد تا از حدس زدن کلید ها جلوگیری شود؟
آیا الگوریتم های خاصی برای اینکار وجود دارد؟
سلام به شما دوست عزیز. احراز هویت با استفاده از api key یک راه معمول در احراز هویت های api ها می باشد که برنامه یک key به کاربر مورد نظر خود میدهد و از این به بعد آن کاربر را با آن کلید شناسایی می کند. (شبیه به یوزرنیم و پسورد). این کلید ها در دیتابیس ثبت می شوند و وقتی کاربری وارد شد آن را تطبیق می دهد. حال برای این که تشخیص دهیم که کلید مربوط به این برنامه است می توان از کدگذاری خاصی استفاده کرد و یا از مکانیزمی مانند password salt استفاده کرد. حالا کسانی که سورس را چک می کنند به کلید ها دسترسی ندارند زیرا که کلید ها در سورس ذخیره نشده اند و در دیتابیس هستند. این که اگر بقیه از کلید ما استفاده کنند را چگونه شناسایی کنیم بستگی به سرور مورد نظر دارد که مکانیزمی برای لاگ گرفتن قرار داده باشد یا خیر.