من یک API REST دارم که توسط دیگر سرورهای شخص ثالث خارجی از طریق اینترنت فراخوانی می شود و فقط برای ارتباطات دستگاه به ماشین استفاده می شود. من به دنبال مکانیسم هایی برای تأمین امنیت این API هستم که فقط سرورهایی که من تعیین می کنم مجاز به استفاده از این API باشند. من سرورها را کنترل نمی کنم و نمی توانم آدرس IP را که این سرورها استفاده می کنند را تضمین کنم.
فکر کردم با استفاده از جریان اعتبار مشتری OAuth ، امنیت API را با دادن شناسه مشتری و راز مشتری انجام دهیم. اما این به من فهمید که چرا اصلاً از OAuth استفاده می کنم و مستقیماً با شناسه و راز مشتری سروکار ندارم ، یعنی وقتی سرورهای خارجی با API من تماس بگیرند ، آنها رمزعبور مشتری و سرویس دهنده را رمز می کنند و اگر یک سازش اتفاق بیفتد ، من راز مشتری و ارتباط را باطل می کنم. دیگر مجاز نخواهد بود برای اینکه دوباره ارتباط برقرار شود ، من یک شناسه مشتری و راز جدید برای آنها صادر می کنم.
آیا این رویکرد صحیح است؟ اگر اینطور نیست ، اگر سرور خارجی مجبور باشد شناسه و راز مشتری را مخفی کند و به هر حال یک رمز را دریافت کند ، مزایای استفاده از اعتبار مشتری در OAuth جریان دارد.