thắc mắc Hỏi về auth trong microservices architecture (C#)

hoangdinhvinhvinh

Junior Member
Hi các bác, em đang tập tành upgrade project cá nhân từ monolithic lên microservices (mục đích vọch vạch) (C# .NET 8)
Hiện em đang mắc ở chỗ authentication và authorization.

Về authentication thì em sử dụng JWT. Còn authorization em áp dụng RBAC, có thể CRUD role cơ bản(có thể cập nhật policy cho role) -> Check quyền trên endpoint bằng cách lấy ra tất cả role cũng như tất cả policy của user -> nếu có thì OK, không thì 403
Trước là monolithic thì em query thẳng db lấy ra các role policies đơn giản hơn.
Còn hiện tại là microservices thì em đang chưa biết xử lý quyền cho từng service như thế nào. Em mới nghĩ được 2 cách:
  • Cho user(bao gồm cả policies) lên redis làm distributed cache rồi lấy về để check, nhưng mà lại hơi vướng ở case nếu cập nhật role policy thì các user trên redis phải cập nhật toàn bộ(em nghĩ là nó ko hay lắm)
  • Lúc gọi hàm check quyền thì dùng grpc ở service user để check
Mong các bác đi qua giúp đỡ hoặc gợi ý cho em 1 vài keyword cũng được ạ:3 :still_dreaming:
 
Hi các bác, em đang tập tành upgrade project cá nhân từ monolithic lên microservices (mục đích vọch vạch) (C# .NET 8)
Hiện em đang mắc ở chỗ authentication và authorization.

Về authentication thì em sử dụng JWT. Còn authorization em áp dụng RBAC, có thể CRUD role cơ bản(có thể cập nhật policy cho role) -> Check quyền trên endpoint bằng cách lấy ra tất cả role cũng như tất cả policy của user -> nếu có thì OK, không thì 403
Trước là monolithic thì em query thẳng db lấy ra các role policies đơn giản hơn.
Còn hiện tại là microservices thì em đang chưa biết xử lý quyền cho từng service như thế nào. Em mới nghĩ được 2 cách:
  • Cho user(bao gồm cả policies) lên redis làm distributed cache rồi lấy về để check, nhưng mà lại hơi vướng ở case nếu cập nhật role policy thì các user trên redis phải cập nhật toàn bộ(em nghĩ là nó ko hay lắm)
  • Lúc gọi hàm check quyền thì dùng grpc ở service user để check
Mong các bác đi qua giúp đỡ hoặc gợi ý cho em 1 vài keyword cũng được ạ:3 :still_dreaming:
Mình thấy cái này vẫn ổn hơn. vì role có thể coi như 1 static data, không thay đổi thường xuyên :still_dreaming: dự án hiện tại của mình đang dùng cách này
 
Hi các bác, em đang tập tành upgrade project cá nhân từ monolithic lên microservices (mục đích vọch vạch) (C# .NET 8)
Hiện em đang mắc ở chỗ authentication và authorization.

Về authentication thì em sử dụng JWT. Còn authorization em áp dụng RBAC, có thể CRUD role cơ bản(có thể cập nhật policy cho role) -> Check quyền trên endpoint bằng cách lấy ra tất cả role cũng như tất cả policy của user -> nếu có thì OK, không thì 403
Trước là monolithic thì em query thẳng db lấy ra các role policies đơn giản hơn.
Còn hiện tại là microservices thì em đang chưa biết xử lý quyền cho từng service như thế nào. Em mới nghĩ được 2 cách:
  • Cho user(bao gồm cả policies) lên redis làm distributed cache rồi lấy về để check, nhưng mà lại hơi vướng ở case nếu cập nhật role policy thì các user trên redis phải cập nhật toàn bộ(em nghĩ là nó ko hay lắm)
  • Lúc gọi hàm check quyền thì dùng grpc ở service user để check
Mong các bác đi qua giúp đỡ hoặc gợi ý cho em 1 vài keyword cũng được ạ:3 :still_dreaming:
cập nhật bắt đăng nhập lại. Xóa cache credentials đi thôi !
 
Đặt 1 con server dành riêng cho authen autho. Quản lý role và permission user cũng trên đấy (tham khảo identity server 4) hoặc service nào tự quản lý role riêng service đấy
 
Hay là mình cho luôn cả role lên redis, lúc authorization handler thì quey role từ roleIds của user được ko nhỉ thím :shame:

via theNEXTvoz for iPhone
thím có thể vứt toàn bộ user info bao gồm cả role lên redis, còn key thì sẽ để trong claims hoặc generate từ email/Id ra
khi nào user thay đổi info hoặc role thì mình update cái cache của user đó là được, ko cần phải log out/log in lại
 
Hay là mình cho luôn cả role lên redis, lúc authorization handler thì quey role từ roleIds của user được ko nhỉ thím :shame:

via theNEXTvoz for iPhone
Chết mẹ vozers cứ tìm cách workaround thế này thì hỏng, sau đi phỏng vấn rớt lia chia rồi bảo sao lại xui.
Cái này nó có cả cái gọi là auth2 protocol, xong rồi có cả keyword identity server, rồi đủ thứ flow tụi nó design ra cả cái protocol
 
Chết mẹ vozers cứ tìm cách workaround thế này thì hỏng, sau đi phỏng vấn rớt lia chia rồi bảo sao lại xui.
Cái này nó có cả cái gọi là auth2 protocol, xong rồi có cả keyword identity server, rồi đủ thứ flow tụi nó design ra cả cái protocol

prefix thread em để là thắc mắc mà bác, em cũng chỉ level trung bình khá thôi nên mới lên xin hỏi các bác chứ :sad:

via theNEXTvoz for iPhone
 
prefix thread em để là thắc mắc mà bác, em cũng chỉ level trung bình khá thôi nên mới lên xin hỏi các bác chứ :sad:

via theNEXTvoz for iPhone
Theo standard mà làm thôi. oauth hoạc oauth-2
Tiếng việt thì xem blog tiki thử :rolleyes:
 
Chết mẹ vozers cứ tìm cách workaround thế này thì hỏng, sau đi phỏng vấn rớt lia chia rồi bảo sao lại xui.
Cái này nó có cả cái gọi là auth2 protocol, xong rồi có cả keyword identity server, rồi đủ thứ flow tụi nó design ra cả cái protocol
Ủa, cache lên redis với xử lý theo RBAC không theo chuẩn Auth2 có vấn đề gì sao bác? Nếu làm theo JWT nhét toàn bộ role vào body thì payload lớn, tùy biến cho nó để tối ưu chứ nhỉ?
 

Thống kê chủ đề

Ngày tạo
hoangdinhvinhvinh,
Người trả lời cuối
crazy9x256,
Trả lời
10
Lượt xem
1.423
Quay lại
Lên đầu trang