Skip to content

Instantly share code, notes, and snippets.

@dattp
Last active September 12, 2023 06:36
Show Gist options
  • Save dattp/56685db53394dcd555c9761f94b8069d to your computer and use it in GitHub Desktop.
Save dattp/56685db53394dcd555c9761f94b8069d to your computer and use it in GitHub Desktop.
Login one time

SSO-CSDL-ENV drawio

Requirement

  • User là giáo viên đã login trên CSDL tại domain: csdl.edu.vn
  • Có thể login vào enetviet.com mà không cần nhập tài khoản và mật khẩu

Flow:

  • 1: User login thành công trên trang CSDL
  • 2: Click vào button login ENV:
    • CSDL call api login/csdl(ma_giao_vien, ma_truong, phone)
  • 3: BE ENV:
    • Check profile và author thông tin của user?
    • User đã login trên app chưa?
    • Generate token one time trong redis: key là token, value là user phone
  • 4: Return token + url webview
  • 5: CSDL redirect to url đã được response + token trên query
  • 6: Web-app request login (source từ CSDL) + token.
  • 7: BE:
    • verify token
    • generate và store channel_id
  • 8: Xử lý đồng thời
    • 8.1: Response về Web-app avatar và tên user để hiển thị, channel_id để Web-app connect socket
    • 8.2: Push notification về cho tài khoản user đã login trên Mobile
  • 9: User nhận được notification yêu cầu đăng nhập trên WEb-app, xác nhận đồng ý
    • Call api cho phép login
  • 10: BE nhận được request confirm từ Mobile-app:
    • Generate cặp access_token và refresh_token
  • 11: Web-app nhận được token do backend emit về và thực hiện luồng login thành công
  • 12: Web-app emit xác nhận login thành công lên BE, disconnect socket...
  • 13: BE clear token, clear channel_id...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment