api - laravel
e có 2 dự án Laravel (A và B). A: quản lý người dùng (cung cấp các Api login, logout, register .....). B: quản lý xyz. (cung cấp Api xyz) câu hỏi: có thể sử dụng access_token login của thằng A để truy cập api của thằng B k.
4 CÂU TRẢ LỜI
Do là hai project riêng biệt nên B muốn dùng chung được access token của A thì có lẽ bạn cũng sẽ cần phải mang APP_KEY của A sang dùng cho B cũng như implement thêm cơ chế authentication/authorization y hệt như trên A. -> Bạn có thể đóng gói hết code cho việc authentication của A thành một composer package rồi cài sang cho B.
Ngoài ra cũng có thể ứng dụng các phương án khác như:
- Tách phần authentication / authorization của A ra xử lý tại tầng API Gateway. A và B cùng đứng sau API Gateway thì không cần phải xử lý lại authentication nữa.
- Cũng có thể dùng kiểu tạo middleware trên B gọi ngược sang A để lấy thông tin. Tuy nhiên điểm hạn chế của nó là B sẽ bị phụ thuộc vào A. Cùng với đó là B cũng cần triển khai trên chung private network vì nếu từ B mà gọi sang A qua public domain thì coi như bỏ vì response time sẽ tăng lên rất nhiều.
- SSO, Oauth2, OIDC...
Có, bạn có thể sử dụng access_token login của thằng A để truy cập api của thằng B. Để làm được điều này, bạn cần thêm một middleware vào api của thằng B để kiểm tra access_token. Middleware này sẽ kiểm tra xem access_token có hợp lệ hay không, nếu hợp lệ thì sẽ cho phép người dùng truy cập api.
config và kiểm tra thế nào để Api của B nhận token của thằng A. bác nói kỹ giúp e phần này được k.
Như bạn dovannam115 nói, bạn có thể thêm middleware ở B để check acess_token có hợp lệ hay không bằng cách sử dụng access_token đó call ngược lại vào A (ví dụ domain_A.com/api/me).
Nếu response trả về OK thì nghĩa là acess_token hợp lệ và ngược lại thì acess_token không hợp lệ.
Theo mình hiểu thì để 2 app có thể sử dụng chung access_token thì 2 app cần có config phần login và hash giống nhau (APP_KEY và SECRET_KEY giống nhau)