Theo anh hiểu thì em đang muốn có 1 service login chung, còn lại các service khác chỉ lo nghiệp vụ thôi nhỉ? Nếu vậy em có thể theo cách này, giả sử em có 2 service:
- authen.app.com: Là service authen tập trung
- service.app.com: Là service nghiệp vụ
Em sẽ cần cấu hình callback url trên google là: https://authen.app.com/google-call-back
Bược 1: User vào service.app.com, lúc này nó thấy cookie không có token, nghĩa là chưa được authen, nó sẽ redirect sang authen.app.com và set vào cookie của authen.app.com là requestApp=service.app.com.
Bước 2: authen.app.com sẽ kiểm tra xem có token của ở trong cookie không, nếu có nó sẽ redirect sang service.app.com với cookie đính kèm token, service.app.com sẽ được mở lên và đến đây kết thúc.
Nếu authen.app.com không thấy có token, nó sẽ hiển thị màn hình login lên.
Bước 3: user chọn login qua google, sau đó google sẽ gọi callback: https://authen.app.com/google-call-back
Bước 4: em sẽ lưu thông tin của user, tạo token.
Bước 5: em lấy requestApp=service.app.com từ cookie sau đó redirect sang service.app.com với cookie đính kèm token, service.app.com sẽ được mở lên và đến đây kết thúc.
Cơ bản là như vậy em ạ.
Cảm ơn anh vì câu trả lời.
Trong quá trình tìm hiểu về chức năng login trong hệ thống chia BE và FE riêng biệt thì em có 1 chỗ đang phân vân bấy lâu mà chưa biết hỏi ai nên cho em hỏi anh thêm 1 câu là giờ em có tìm thấy 2 hướng để lấy thông tin của user sau khi user nhấn chấp nhận cho phép App của ta sử dụng thông tin FB/Google của họ.
- Gọi Google/FB ở FE: cụ thể config client-secrect và cient- id ở React sau đó nhấn nút login và nhận được id của user đó từ Google/FB => gửi id vừa nhận lên BE để xử lí => Nếu id đó chưa tồn tại thì tạo account và token hoặc nếu id có ở DB rồi thì chỉ tạo token => gửi token cho FE.
- Gọi Google/FB ở BE: Đối với Spring thì dùng thư viện spring-oauth2-client.Config client-secrect và cient- id ở BE.Cung cấp FE 1 đường link.Sau khi nhấp vào thì BE sẽ redirect sang trang Google/FB tương ứng với đường link => BE gọi và nhận được id => các bước tiếp theo xử lí tương tự như cách 1.Cuối cùng sẽ redirect về địa chỉ của FE ví dụ redirect url như sau: localhost:3000/oauth2/callback?token=12345abc.Sau đó FE nhận token và lưu trữ.
Cho em hỏi 2 cách này thì cách nào ổn hơn ạ.
Rất cảm ơn anh!
–
Lâm Văn Đời
1668309451000