![]() |
|
|
Thread Tools |
|
#21
|
|||
|
|||
|
Re: Thảo luận về microservice
Quote:
việc check authorization hoàn toàn nằm ở từng microservice, check thông qua middleware |
|
#22
|
|||
|
|||
|
Re: Thảo luận về microservice
Quote:
việc check authorization hoàn toàn nằm ở từng microservice, check thông qua middleware |
|
#23
|
||
|
||
|
Re: Thảo luận về microservice
em junior thôi nhưng thấy gần đây cứ Microservices là đi với Golang
![]() à mà cty bác thớt có tuyển gì làm vs data không inbox em với
|
| WasupMoFucker |
| View Public Profile |
| Find all posts by WasupMoFucker |
|
#24
|
|||
|
|||
|
Re: Thảo luận về microservice
Authorization thì có thể dùng JWT và nhét quyền (permission/scope) vào token.
Vd như token có: Code:
{
"permissions": [
"user_view",
"user_create",
"user_update"
]
}
Nhưng mà cách này mình thấy chỉ phù hợp với mô hình RBAC trên từng function/feature và số lượng quyền ít, chứ số lượng mà nhiều hơn thì cái token nó lại to quá, có vẻ k ổn!? Cái nữa là nếu yêu cầu là sử dụng ACL phân quyền trên từng domain object thì chịu, mình cũng chưa biết làm sao!? Vd bên mình có một case thế này: Chuỗi nhà hàng có 10 cái thì quản lý của mỗi chi nhánh chỉ dc phép truy cập chi nhánh mà mình quản lý. Tương tự với nhân viên chỉ dc phép truy cập một số chức năng và data của chi nhánh mà mình làm việc.
__________________
Món ngon, deal chất! https://www.meete.co/ |
|
#25
|
|||
|
|||
|
Re: Thảo luận về microservice
Cho em hỏi về cái authorization tý, luồng xử lý web api thế nào khi client(web or mobile) đăng nhập các provider như facebook, google
Hiện tại em google thì thấy nó như thế này: client đăng nhập các provider get về profile, access token, refresh token (nếu có). Client request đống trên về web api, web api dùng access token request lại lên provider, nhận lại kết quả và so sánh xem profile có trùng khớp với profile của client gửi hay không Như thế là đúng chưa các bác |
| thuc974287 |
| View Public Profile |
| Find all posts by thuc974287 |
|
#26
|
||
|
||
|
Re: Thảo luận về microservice
Quote:
|
|
#27
|
|||
|
|||
|
Re: Thảo luận về microservice
Quote:
Tạo table: 1. User - Group User, Group User - Group. 2. Group User - Group User Action, Group User Action - Group Action. 3. Group - Group Action, Group Action - Action. Mấy cái chi nhánh, cửa hàng, nhân viên (trưởng, phó, kế toán,..)...cứ thế mà tống data vào thôi. khi tạo 1 user nên cho nó vào 1 nhóm Group User (kể cả nó chỉ có quyền view cũng tống nó vào đó cho dễ quản lý). Phân quyền dựa trên location, store, department, staff,...gần như giống với phân quyền trong ERP (HR, Salary,...) // Thêm nữa, trong token có user_id là được, API check quyền xong trả về message access deny và status code là xong, chứ mình ko thích nhét permission vào trong token. |
|
#28
|
|||
|
|||
|
Re: Thảo luận về microservice
Quote:
1. Với authorization trên domain object thì thực hiện ở mức service. Vì domain object là data thuộc service đó cho nên k nơi nào tốt hơn check authorization trong chính service. 2. Với authorization trên function/feature thì có thể thực hiện ở mức service hoặc ngay trên API Gateway. 3. Trường hợp thực hiện check authorization trên API Gateway. 3a. Nếu permission/scope ít thì cứ nhét tất vào token cho khỏe. Lúc request đến thì cứ check resource cần truy cập và permission trong token là xong. 3b. Nếu permission/scope "nhiều", cảm thấy token to quá thì có thể đẻ ra một thằng authorization-service. API Gateway gọi thằng authorization-service này để kiểm tra trước khi thực sự gọi xuống các service khác. Data ở service này có thể cache lại nên có lẽ k lo lắng lắm về performance, chỉ có điều giờ hệ thống sẽ có 2 thằng SPOF là API Gateway & Authorization-service. Mới nghĩ dc nhiêu đó, chưa có cách nào hay hơn
__________________
Món ngon, deal chất! https://www.meete.co/ |
|
#29
|
|||
|
|||
|
Re: Thảo luận về microservice
Quote:
![]() Nhân tiện muốn hỏi có bác nào đã sử dụng mô hình Attribute-Based Access Control chưa nhỉ? https://www.axiomatics.com/attribute...s-control.html
__________________
Món ngon, deal chất! https://www.meete.co/ |
|
#30
|
|||
|
|||
|
Re: Thảo luận về microservice
Rồi bác, cách đây 4 năm.
Có 2 chi nhánh ở SG và HN (gọi là location), ở mỗi location lại có các chi nhánh (region), mỗi 1 region lại có các phòng ban (department), phòng ban lại có staff (nhân viên trưởng phòng, phó phòng,...). Giám đốc/phó giám đốc ở region/location. Từng location/rẹgion/department và director, staff chỉ được thực hiện 1 vài action trên hệ thống ứng với scope của mình. Project yêu cầu phân quyền kiểu thế. Còn data thì nếu bác dùng chung 1 DB thì cứ thêm field để biết là data từ đâu vào. Còn nếu mỗi 1 cửa hàng dùng 1 DB riêng, data sync về 1 DB tập trung thì nhẹ nhàng hơn. |
![]() |
|
|