Read-only archive. Login and posting are unavailable.
Reply
 
Thread Tools
  #31  
Old 04-12-2016, 17:13
cuoc_song's Avatar
Đã tốn tiền
Join Date: 03-2007
Posts: 2,742
Re: Thảo luận về microservice

Quote:
Originally Posted by RPG29 View Post
Thực ra thì cũng đã suy nghĩ vấn đề này. Security nói chung là cross-cutting concern, cho nên đặt ở nhiều chỗ có lẽ cũng chấp nhận được.

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ình cũng gặp vấn đề tương tự. Nhưng mà với việc perrmisson cho domain object thì mình buộc phải fix các role trước để check logic. còn với ACL check function thì có thể tùy biến role. Cơ mà lại phát sinh vấn đề là khi logic thay đổi 1 chút lại thay đổi tất cả các role đã có lại phải đi phân quyền function lại. Lại 1 vòng test từ đầu đến cuối.

Kinh nghiệm của bác với permission của domain object là gì vậy?
Reply With Quote
  #32  
Old 04-12-2016, 18:29
Senior Member
Join Date: 04-2010
Posts: 302
Re: Thảo luận về microservice

Theo ngu ý của tui thôi là Authorization phải thực hiện trên Server ở bất kỳ Action nào. Ở client có thể lưu giữ thông tin về Role và các Permissions nhưng chỉ để giảm tải cho server về phần đọc permissions thôi. Nhưng trước khi thực hiện bất kỳ tác vụ nào trên server đều phải được authorized (permitted/denied). Dù là client có siêu cấp mã hóa thế nào đi chăng nữa thì "never trust user input" là quy tắc bất di bất dịch.
Reply With Quote
  #33  
Old 04-12-2016, 19:53
cuoc_song's Avatar
Đã tốn tiền
Join Date: 03-2007
Posts: 2,742
Re: Thảo luận về microservice

Quote:
Originally Posted by _sharp_ View Post
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.
Bác có tài liệu design và implement cho cái ABAC không cho mình xin với
Reply With Quote
  #34  
Old 04-12-2016, 20:26
_sharp_'s Avatar
Đã tốn tiền
Join Date: 11-2009
Posts: 1,521
Re: Thảo luận về microservice

Quote:
Originally Posted by 4nh7i3m View Post
d (permitted/denied). Dù là client có siêu cấp mã hóa thế nào đi chăng nữa thì "never trust user input" là quy tắc bất di bất dịch.
Quote:
Originally Posted by _sharp_ View Post
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.
ahihi, "đồng da^m" đây rồi
Reply With Quote
  #35  
Old 04-12-2016, 23:24
thuc974287's Avatar
Đã tốn tiền
Join Date: 09-2010
Posts: 755
Re: Thảo luận về microservice

Quote:
Originally Posted by thuc974287 View Post
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
Ai giúp em vấn đề này với
Reply With Quote
  #36  
Old 05-12-2016, 08:48
RPG29's Avatar
Đã tốn tiền
Join Date: 07-2010
Posts: 1,715
Re: Thảo luận về microservice

Quote:
Originally Posted by cuoc_song View Post
Mình cũng gặp vấn đề tương tự. Nhưng mà với việc perrmisson cho domain object thì mình buộc phải fix các role trước để check logic. còn với ACL check function thì có thể tùy biến role. Cơ mà lại phát sinh vấn đề là khi logic thay đổi 1 chút lại thay đổi tất cả các role đã có lại phải đi phân quyền function lại. Lại 1 vòng test từ đầu đến cuối.

Kinh nghiệm của bác với permission của domain object là gì vậy?
Bên mình chủ yếu là RBAC trên chức năng. Map Controller - Action - Role thôi.
Còn case phân quyền trên domain object là case quản lý + nhân viên của mỗi chi nhánh chỉ dc truy cập data của chi nhánh đó. Hiện ko có implement ACLmà dùng Voter trên object, ko dc linh hoạt như ACL nhưng bước đầu vậy là đủ.

Bác nào có ref tham khảo implement ABAC share ae với, thấy thằng này thú vị quá
__________________
Món ngon, deal chất!
https://www.meete.co/
Reply With Quote
  #37  
Old 05-12-2016, 08:54
RPG29's Avatar
Đã tốn tiền
Join Date: 07-2010
Posts: 1,715
Re: Thảo luận về microservice

Quote:
Originally Posted by thuc974287 View Post
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
Client chạy lên oauth2 provider để lấy access_token. Bên trong access_token có nhúng các quyền truy cập mà app đã yêu cầu (email, friends, liked...).

Client submit access_token lên server, server ném access_token mà client truyền lên qua oauth2 provider để verify. Nếu thành công thì sẽ get dc những data tương ứng với quyền trên access_token.
__________________
Món ngon, deal chất!
https://www.meete.co/
Reply With Quote
  #38  
Old 05-12-2016, 21:10
cuoc_song's Avatar
Đã tốn tiền
Join Date: 03-2007
Posts: 2,742
Re: Thảo luận về microservice

Nếu có nhiều instance của 1 service tại các IP khác nhau thì các bác đang routing bằng cái gì vậy ?? DNS LB chăng ?
Reply With Quote
  #39  
Old 05-12-2016, 23:33
thuc974287's Avatar
Đã tốn tiền
Join Date: 09-2010
Posts: 755
Re: Thảo luận về microservice

Quote:
Originally Posted by RPG29 View Post
Client chạy lên oauth2 provider để lấy access_token. Bên trong access_token có nhúng các quyền truy cập mà app đã yêu cầu (email, friends, liked...).

Client submit access_token lên server, server ném access_token mà client truyền lên qua oauth2 provider để verify. Nếu thành công thì sẽ get dc những data tương ứng với quyền trên access_token.
Thanks bác
Reply With Quote
  #40  
Old 10-12-2016, 17:40
cuoc_song's Avatar
Đã tốn tiền
Join Date: 03-2007
Posts: 2,742
Re: Thảo luận về microservice

không bác nào quan tâm cái này nữa à ?
Reply With Quote
Reply

« Previous Thread | Next Thread »

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


All times are GMT +7. The time now is 05:07.