You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »


پروژه SSO


سناریو کلی :

  1. پس از redirect شدن کاربر به سمت سامانه بر روی آدرس oauth/authorize/ کاربر را به / ریدارکت می‌کنیم و کنترلری برای اینکار نوشته شده که index.html حاوی انگولار را بر می‌گرداند.
  2. بعد از لود شدن صفحه انگولار درخواستی تحت عنوان initiate-login داده می‌شود که در آن اطلاعات موردنیاز برای صفحه لاگین و آدرس صفحه بعدی داده می‌شود
  3. پس از واردنمودن کدملی دکمه ادامه زده می‌شود که در آن آدرس صفحه بعدی از پاسخ سرویس قبلی فراخوانی می‌شود که در مرحله اول send/otp/ است
  4. پس از وارد کردن کد پیامکی توسط کاربر سرویس authenticate/first-page/ فراخوانی می‌شود و در صورت موفقیت آمیز بودن کلاینت درخواست آخر برای احرازهویت یعنی /login را می‌زند.
  5. در پاسخ این درخواست کاربر هدایت می‌شود به آدرس 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"
    },
    "action_button_address":"/send/otp"
}


توضیح پاسخ :

  1. در قسمت user_info اطلاعات کاربر قرار دارد
  2. در قسمت client_info اطلاعات نهاد متکی قراردارد و دیگر نیازی به فراخوانی سرویس download برای logo نیستیم و در همین پاسخ برگردانده می‌شود


سرویس ارسال پیامک

آدرس سرویس : send/otp/

بدنه درخواست : اطلاعات کدملی و شماره موبایل 

متد : POST 

نوع محتوا : application/x-www-form-urlencoded

پاسخ :

نمونه پاسخ درست ارسال پیامک
"error": {
         "next_page": "it can be any page orerror page",
        "reason": "error reason",
		"next_page_action":"/authenticate/first-page",
		"next_page_data":{}
    },
    "success": {
        "next_page": "otp",
		"next_page_action":"/authenticate/first-page"
		 "next_page_data":{
            "code_expire_date":12312
        },
        "ready_for_final_authenticate": false
    }


توضیح پاسخ : 

  1. در قسمت error در صورتی که خطایی رخ داده باشد این فیلد در پاسخ قرار می‌گیرد و در صورت موفقیت آمیز بودن درخواست اثری از آن نیست
    1. فیلد next_page : وقتی برابر صفحه error باشد حالتی است که در آن باید کاربر را به صفحه error برد و در آنجا مقدار فیلد reason را در آن صفحه نشان داد.
    2. فیلد next_page : وقتی برابر صفحه ای مثل login, otp  و یا push otp باشد باید مقدار خطا را در آن صفحه به صورت toast نشان دهد (اگر مقدار فیلد next_page با صفحه جاری برابر بود به طبع دیگر نیازی به تغییر صفحه نیست و همانجا باید پیام خطا toast شود) 
      فیلد reason : نشان دهنده دلیل خطاست.

    3. فیلد next_page_action : آدرسی که دکمه موجود در آن صفحه حاوی خطا نیاز است تا کاربر فراخوانی کند.
    4. فیلد next_page_data : اطلاعاتی که در آن صفحه حاوی خطا نیاز است تا در صفحه نمایش داده بشود.
  2. در قسمت success  در صورتی که عملیات با موفقیت انجام شود این فیلد در پاسخ قرار می‌گیرد.
    1. فیلد next_page : صفحه بعدی را نشان می‌دهد الزاما این صفحه همواره صفحه ی بعد نیست مانند حالتی که سامانه پیامکی دچار مشکل شده‌است و پس از درخواست /send/otp باید در همان صفحه login بمانیم.
    2. فیلد next_page_action : آدرسی که دکمه موجود در صفحه otp برای واردنمودن کد دریافت شده توسط کاربر را نشان می‌دهد
    3. فیلد next_page_data : اطلاعاتی که در صفحه آتی (اینجا otp) است را شامل می‌شود
    4. فیلد ready_for_final_authenticate : اگر برابر true بود در پاسخ هر سرویسی به منظور آن است که کاربر تمام مراحل احرازهویت موردنظر را به پایان رسانده است و باید درخواست login/ فراخوانی شود. که در جواب این درخواست کاربر redirect می‌شود.

 دکمه ارسال مجدد پیامک در صفحه otp نیز همین سرویس را فراخوانی می‌کند.


سرویس احرازهویت اطلاعات صفحه اول (first-page)

آدرس سرویس : authenticate/first-page/

بدنه درخواست : کد واردشده 

متد : POST 

نوع محتوا : application/x-www-form-urlencoded

پاسخ : 

نمونه پاسخ درست first-page
 "success": {
        "next_page": "otp",
		"next_page_action":"/login"
		"next_page_data":{},
        "ready_for_final_authenticate": true
    }


توضیح پاسخ :

در هر پاسخی وقتی مقدار ready_for_final_authenticate برابر true بود باید login/ فراخوانی شود و کاربر redirect شود.


پاسخ خطا (در صورتی که شاهکار اطلاعات کاربر را قبول نکند)

نمونه پاسخ اشتباه
"error": {
        "next_page": "login",
        "reason": "mobile number and national number not matched",
		"next_page_action":"/authenticate/first-page",
		"next_page_data":{}
    }

در این حالت کاربر صفحه لاگین را می‌بیند و در آنجا پیام خطا toast میشود و چون صفحه اول است درخواست initiate login نیز برای پرکردن اطلاعات صفحه زده می‌شود.


پاسخ خطا (در صورتی که کد پیامکی اشتباه زده باشد)

نمونه پاسخ خطا در کد پیامکی
"error": {
        "next_page": "otp",
        "reason": "otp was incorrect",
		"next_page_action":"/authenticate/first-page",
		"next_page_data":{
            "code_expire_date":1111
        }
    }


پاسخ درست (حالتی که مرحله بعد صفحه تشخصیص چهره باشد)

نمونه درست پاسخ و رفتن به مرحله تشخصی چهره
"success": {
        "next_page": "facedetection",
		"next_page_action":"/authenticate/face-decetion"
		"next_page_data":{...},
        "ready_for_final_authenticate": false
    }
  • No labels