Hỏi về quy trình xác thực trong OAuth2

Chào mọi người ạ.
Quy trình xác thực với giao thức OAuth2 với Authorization Code ở ảnh phía dưới.

Ở bước 9 thì user gửi accessToken về server của mình, phía server mình sẽ cần tạo mới 1 user model và lưu vào DB nếu lần đầu đăng nhập hoặc xác thực quyền truy cập để cấp dữ liệu cho user ở những lần sau.

Em xin hỏi là:

  1. User model cần có những trường bắt buộc nào, hay nên gom lại 1 thuộc tính dưới dạng json để đồng bộ với nhiều server xác thực khác nhau như Google, Facebook, Twitter, … ?
  2. Làm sao để mình có thể kiểm tra tính hợp lệ của accessToken mà user gửi về ?
  • Token có thể hết hạn, cơ chế khác nhau tùy theo server xác thực khác nhau như Google và Facebook
  • Vì lý do bảo mật, accessToken nếu lưu ở DB thì nên được mã hóa
  1. Để lấy tên tài khoản, profile image, … (profile attributes) của người dùng, chúng ta nên gọi trực tiếp từ client tới server xác thực hay gọi từ server của mình tới server xác thực để lưu vào DB rồi trả về ?
    Nếu lưu thì nên lưu 1 lần duy nhất khi người đùng đăng nhập lần đầu hay cần cập nhật ?

Em còn nhiều chỗ chưa nắm rõ nên câu hỏi có thể không hợp lý hoặc thiếu sót, rất mong được chỉ giáo. Em cảm ơn nhiều ạ !

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?