پروژه SSO
سناریو کلی :
- پس از redirect شدن کاربر به سمت سامانه بر روی آدرس oauth/authorize/ کاربر را به / ریدارکت میکنیم و کنترلری برای اینکار نوشته شده که index.html حاوی انگولار را بر میگرداند.
- بعد از لود شدن صفحه انگولار درخواستی تحت عنوان initiate-login داده میشود و در پاسخ در صورت موفقیت آمیز درخواست send/otp داده میشود
- پس از وارد کردن کد پیامکی توسط کاربر سرویس authenticate/first-page/ فراخوانی میشود و در صورت موفقیت آمیز بودن کلاینت درخواست آخر برای احرازهویت یعنی /login را میزند.
- در پاسخ این درخواست کاربر هدایت میشود به آدرس oauth/authorize/ که اول درخواست آن را داده بود و پس از آن به نهادمتکی که از آنجا اومده بود هدایت میشود.
جزئیات مراحل :
سرویس initiate login
آدرس سرویس : initiate-login/
بدنه درخواست : ندارد
متد : POST
پاسخ :
نمونه پاسخ درست
{ "user_info": { "mobile_number": "", "national_number": "", "loa": "" }, "client_info": { "scope_titles": "", "client_name": "", "client_logo": "we dont need client id and download address any more" }, "error": { "next_page": "it can be current or error or any page , if it is current stay there and toast the reason and if it is error page print it on the error page dont need to toast but for another pages toast the reason", "reason": "" }, "success": { "next_page": "otp", "ready_for_firstpage_authenticate": false, "ready_for_final_authenticate": false } }
توضیح پاسخ :
- در قسمت user_info اطلاعات کاربر قرار دارد
- در قسمت client_info اطلاعات نهاد متکی قراردارد و دیگر نیازی به فراخوانی سرویس download برای logo نیستیم و در همین پاسخ برگردانده میشود