زمینه:
این معماری سکو است که من روی آن کار می کنم:
API دارای چندین نقطه پایانی امن برای دسترسی به پایگاه داده است. کاربران با اعتبار خود در Front End وارد می شوند و در صورت اعتبار ، API یک Json Web Token (JWT) را برمی گرداند. JWT با استفاده از یک کلید متقارن مخفی تولید می شود.
مسئله:
چندین سرور وجود دارد که برنامه هایی را اجرا می کنند که برای برقراری تماس با API نیاز دارند. در حال حاضر ، روش انجام این کار این است که هر برنامه ای روی سرور دارای کلید مخفی است و JWT خود را با آن ایجاد می کند. سپس آن JWT به درخواست به API ارسال می شود ، و به وی اجازه می دهد تا درخواست خود را انجام دهید.
این بدیهی است ایده آل نیست ، زیرا راز فقط باید در یک نقطه وجود داشته باشد ، و فقط توسط خود API مورد استفاده قرار می گیرد. همچنین ، این میزان خطر قرار گرفتن در معرض را به میزان قابل توجهی افزایش می دهد ، زیرا تعداد سرورها در حال رشد هستند.
سؤال:
آیا روشی آزمایش شده و واقعی برای تأیید اعتبار این سرورها بدون به اشتراک گذاشتن کلید مخفی وجود دارد؟ آیا می توان از کلیدهای عمومی / خصوصی برای تأیید اعتبار استفاده کرد؟