# BE - kiểm tra tính đúng đắn của thông tin định danh có trong request ## Basic Authentication ### Flow - Cung cấp { username, password } -> lưu db - Lấy { username, password } -> check db + decode base64 ### Vấn đề - Check db ở mọi request ## SecretKey ### Flow - Cung cấp chuỗi secretKey (duy nhất) - Lấy token từ request - hash(req.url+secretKey) == h - compare chuỗi h == token ?? ## SecretKey w/ timestamp ### Flow - Cung cấp chuỗi secretKey (duy nhất) - Lấy { ts, token } từ request - hash(ts+req.url+secretKey) == h - compare chuỗi h == token ?? ## AccessToken ### Flow (backend có SECRET_KEY) - Check db, kiểm tra { username, password } - Tạo accessToken -> client + accessToken: encode(payload + hash(payload+SECRET_KEY)) + payload: { ts, additional_info } - Kiểm tra (verify) accessToken + decode accessToken -> { payload + signature } + Kiểm tra thời gian ts + hash(payload+SECRET_KEY) == h + compare h == signature ?? ### Vấn đề - Không thể tự vô hiệu hoá 1 accessToken nào -> chỉ có cách chờ accessToken tự expired ## AccessToken + RefreshToken ### Flow (backend có SECRET_KEY) - Check db, kiểm tra { username, password } - Tạo { accessToken, refreshToken } -> client + accessToken sớm expired (2p) + refreshToken LÂU expired, phải vô hiệu hoá được * lưu vào db * ko cần thuật toán hash, encode gì hết - Kiểm tra (verify) accessToken #### Quá trình xin accessToken mới - Kiểm tra refreshToken (check db) -> nếu hợp lệ thì cấp accessToken-mới