DANH MỤC TÀI LIỆU
Cách xác thực và phân quyền trong Microservices
Cách xác th c và phân quy n trong Microservicesự ề
Xác th c (authentication, tr l i câu h i b n là ai) và phân quy n ả ờ
(authorization, tr l i câu h i b n có th làm đ c gì) luôn là thành ph n ả ờ ượ
không th thi u c a m i h th ng, nh ng m c đ áp d ng thì l i tùy ế ọ ệ ố ư
thu c vào t ng giai đo n. N u b n làm m i th ch t ch ngay t đ u, ế ừ ầ
có th làm tăng đ ph c t p và làm ch m s phát tri n c a công ty. Nh ng ứ ạ ư
n u b n làm nó quá mu n, thì có th b n s h ng ch u nguy c b t n côngế ơ ị ấ
và r i ro t đó. V i 1 công ty e-commerce nh Tiki, r i ro đó r t hi n h u ư ệ ữ
v i các h th ng liên quan t i thanh toán, ti n o (Tiki Xu), mã khuy n m i ề ả ế
(coupon), phi u quà t ng (giftcard) và nhi u h th ng nh y c m khác…ế ệ ố
B t đ u t Monolithicắầừ
Tiki xu t phát là 1 h th ng monolithic, thông th ng h th ng nh v y ệ ố ườ ệ ố ư
s có 1 module chung qu n lý vi c xác th c và phân quy n, m i user sau ề ỗ
khi đăng nh p s đ c c p cho 1 Session ID duy nh t đ đ nh danh. Phía ẽ ượ ể ị
client có th l u Session ID l i d i d ng cookie và g i kèm nó trong m i ể ư ướ
request. H th ng sau đó s dùng Session ID đ c g i đi đ xác đ nh danh ệ ố ượ
tính c a user truy c p, đ ng i dùng không c n ph i nh p l i thông tin ườ ậ ạ
đăng nh p l n sau. ậ ầ
Khi Session ID đ c g i lên, server s xác đ nh đ c danh tính c a ng i ượ ử ượ ườ
dùng g n v i Session ID đó, đ ng th i s ki m tra quy n c a user xem có ờ ẽ
đ c truy c p tác v đó hay không. Gi i pháp session và cookie v n có th ượ ậ ụ
s d ng, tuy nhiên ngày nay chúng ta có nhi u yêu c u h n, ch ng h n nhử ụ ơ ư
các ng d ng Hybrid ho c SPA (Single Page Application) có th c n truy ể ầ
c p t i nhi u h th ng backend khác nhau, vì v y session và cookie l y t ậ ớ ệ ố ấ ừ
1 server có th không s d ng đ c server khác. ượ ở
Bài toán khó Microservices
Trong ki n trúc microservices, h th ng đ c chia nh thành nhi u h ế ệ ố ượ
th ng con, đ m nh n các nghi p v và ch c năng khác nhau. M i h th ng ỗ ệ ố
con đó cũng c n đ c xác th c và phân quy n, n u x lý theo cách c a ầ ượ ế ử
ki n trúc Monolithic trên chúng ta s g p các v n đ sau:ế ẽ ặ
M i service có nhu c u c n ph i t th c hi n vi c xác th c và phân ả ự
quy n service c a mình. M c dù chúng ta có th s d ng các th ể ử ư
vi n gi ng nhau m i service đ làm vi c đó tuy nhiên chi phí đ ở ỗ
b o trì th vi n chung đó v i nhi u n n t ng ngôn ng khác nhau là ư ệ ề ả
quá l n.
M i service nên t p trung vào xây d ng các nghi p v c a mình, ụ ủ
vi c xây d ng thêm logic v phân quy n làm gi m t c đ phát tri n ố ộ
và tăng đ ph c t p c a các service. ứ ạ
Các service thông th ng s cung c p các interface d i d ng ườ ướ ạ
RESTful API, s d ng protocol HTTP. Các HTTP request s đ c đi ử ụ ẽ ượ
qua nhi u thành ph n c a h th ng. Cách truy n th ng s d ng ử ụ
session server (stateful) s gây khó khăn cho vi c m r ng h th ng ở ộ
theo chi u ngang.
Service s đ c truy c p t nhi u ng d ng và đ i t ng s d ng ẽ ượ ề ứ ượ ử ụ
khác nhau, có th là ng i dùng, 1 thi t b ph n c ng, 3rd-party, ườ ế ị
crontab hay 1 service khác. Vi c xác đ nh đ nh danh (identity) và phân ị ị
quy n (authorization) nhi u ng c nh (context) khác nhau nh v y ữ ả ư
là vô cùng ph c t p.ứ ạ
D i đây là m t s gi i pháp, k thu t và h ng ti p c n mà Tiki đã áp ướ ộ ố ư ế
d ng cho bài toán này.
Đ nh danh
S d ngử ụ JWT
JWT (Json Web Token) là 1 lo i token s d ng chu n m dùng đ trao đ i ử ụ
thông tin kèm theo các HTTP request. Thông tin này đ c xác th c và đánh ượ ự
d u 1 cách tin c y d a vào ch ký. JWT có r t nhi u u đi m so v i ề ư
session.
Stateless, thông tin không đ c l u tr trên server.ượ ư
D d ng phát tri n, m r ng. ở ộ
Performance t t h n do server đ c thông tin ngay trong request (n u ố ơ ế
session thì c n đ c storage ho c database) ọ ở
Mã hóa RSA cho JWT
Ph n ch ký s đ c mã hóa l i b ng HMAC ho c RSA. ẽ ượ
HMAC: đ i t ng kh i t o JWT (token issuer) và đ u nh n JWT ố ượ ở ạ
(token verifier) s d ng chung 1 mã bí m t đ mã hóa và ki m tra.ử ụ
RSA: s d ng 1 c p key, đ i t ng kh i t o JWT s d ng Private ử ụ ư ử ụ
Key đ mã hóa, đ u nh n JWT s d ng Public Key đ ki m tra. ử ụ
Nh v y v i HMAC, c 2 phía đ u ph i chia s mã bí m t cho nhau, và ư ậ
đ u nh n JWT hoàn toàn có th kh i t o 1 mã JWT khác h p l d a trên ệ ự
mã bí m t đó. Còn v i RSA, đ u nh n s d ng Public Key đ ki m tra ử ụ
nh ng không th kh i t o đ c 1 JWT m i d a trên key đó. Vì v y mã hóaư ở ạ ượ
s d ng RSA giúp cho vi c b o m t ch ký t t h n khi c n chia s JWT ử ụ ơ
v i nhi u đ i t ng khác nhau. ố ượ
S d ng Opaque Token khi mu n đ ki m soát phiên làm vi c t t h nơ
Opaque Token (còn đ c g i là stateful token) là d ng token không ch a ượ ọ
thông tin trong nó, thông th ng là 1 chu i ng u nhiên và yêu c u 1 service ườ ỗ ẫ
trung gian đ ki m tra và l y thông tin.ể ể
Transparent Token (còn đ c g i là stateless token) thông th ng chính là ượ ọ ườ
d ng JWT, token này b n thân ch a thông tin và không c n 1 service trung ả ứ
gian đ ki m tra. Hãy cùng so sánh 2 lo i token này.ể ể
Nh v y ta có th th y Transparent Token mang l i t c đ t t h n, đ n ư ộ ố ơ ơ
gi n d s d ng v i c 2 phía, không phù thu c vào 1 server trung tâm đ ễ ử
ki m tra. Còn Opaque Token ki m soát t t h n các phiên làm vi c c a đ i ố ơ
t ng, ch ng h n khi b n mu n thoát t t c các thi t b đang đăng nh p.ượ ấ ả ế
OAuth 2
Các token s đ c kh i t o thông qua OAuth 2, là ph ng th c ch c th c ẽ ượ ươ
ph bi n nh t hi n nay, mà qua đó m t service, hay m t ng d ng bên th ế ộ ứ
3 có th đ i đi n (delegation) cho ng i dùng truy c p vào 1 tài nguyên c aể ạ ườ
ng i dùng n m trên 1 d ch v nào đó.ườ ị ụ
OAuth 2 là chu n m , có đ y đ tài li u, th vi n t t c các ngôn ng ư ở ấ
khác nhau giúp cho vi c tích h p, phát tri n d a trên nó tr nên d dàng và ể ự
nhanh chóng.
****
Ki n trúc cho xác th c và phânế quy n
Sau khi đã có đ nh danh và giao th c dùng đ giao ti p, câu h i ti p theo là ế ỏ ế
c n tr l i câu h i đ i t ng v i đ nh danh đó có quy n th c hi n 1 hành ả ờ ư
thông tin tài liệu
Xác thực (authentication, trả lời câu hỏi bạn là ai) và phân quyền (authorization, trả lời câu hỏi bạn có thể làm được gì) luôn là thành phần không thể thiếu của mọi hệ thống, nhưng mức độ áp dụng thì lại tùy thuộc vào từng giai đoạn.
Mở rộng để xem thêm
xem nhiều trong tuần
yêu cầu tài liệu
Giúp bạn tìm tài liệu chưa có

LÝ THUYẾT TOÁN


×