تأیید اعتبار – مجوز ارتباط پیوندی بین برنامه ها از طرف کاربر

من در حال تلاش برای تعویض سر من به سوال بعدی امنیت وب است. بگو ما سیستمی را که در تصویر زیر نشان داده شده است تنظیم می کنیم.

 سیستم

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

برنامه اصلی می تواند با این سیستم های دیگر ارتباط برقرار کند و برعکس. بیشتر زمان آن در زمینه تعامل کاربر است.

 کاربر با برنامه اصلی ارتباط برقرار می کند. برنامه اصلی درخواست برنامه دیگر را در متن درخواست کاربر می دهد.

درخواست از برنامه اصلی به برنامه دیگر باید (1) مجاز باشد و (2) ما می خواهیم در "برنامه های دیگر" که از طرف کاربر تماس آغاز شده است (نه "برنامه اصلی"، بلکه "کاربر").

واقعا وسوسه انگیز است که فقط اخطار کاربر oAuth را از برنامه اصلی به برنامه دیگر ارسال کند. اما این ممکن است مفاهیم امنیتی جدی را به عنوان "برنامه دیگری" در حال حاضر تمام حقوق کاربر را به خلق با برنامه اصلی (https://tools.ietf.org/html/rfc6749#section-10.3).

این ممکن است بد نیست، چون ما خودمان این خدمات را مدیریت می کنیم، اما این مطمئنا مناسب نیست در صورتی که ما با برنامه های شخص ثالث برخورد کنیم.

خلاصه، سوال من این است: اگر کاربر شروع به کار کند یک درخواست در یک برنامه که به نوبه خود باید یک برنامه دیگر را برای تکمیل درخواست درخواست کند چگونه می توانیم:

  • مجاز این تماس دوم از برنامه به برنامه های دیگر (با توجه به کاربر مجاز است و ما یک سیستم تأیید هویت مرکزی oAuth)
  • و هنوز به هر دلیلی از طرف کاربر که تماس گرفته شد، می دانیم

در حالت ایده آل، گیرنده انتهای تماس حتی نمی داند که تماس توسط برنامه دیگری آغاز شده است (فقط فکر می کند که مستقیم است از یک کاربر تماس بگیرید) این فقط استفاده از رهگیرهای امنیتی oAuth در حال حاضر است.