Bản chất quá trình sử dụng Token và API là bảo vệ và lưu trữ các thông tin của cá nhân, doanh nghiệp một cách an toàn và bí mật. Nắm được API là gì? Token là gì? sẽ hỗ trợ không nhỏ cho nhu cầu thanh toán và giao dịch trực tuyến trong cuộc sống hiện đại ngày nay.

1. Token là gì?
Token là thông tin xác nhận điện tử được hình thành dựa trên hệ thống công nghệ mã hóa công khai. Token thường được sử dụng trong hoạt động kinh doanh của nền tảng thương mại trực tuyến. Thiết bị hỗ trợ thể hiện Token là USB Token. Thiết bị này được tạo nên để hình thành cặp khóa công khai nhằm lưu trữ và bảo mật thông tin.
Có 2 dạng Token điển hình là:
– Hard Token: Đây là một thiết bị nhỏ gọn có kích thước tương tự như chiếc USB có thể dễ dàng mang đi khắp mọi nơi. Mỗi khi tiến hành giao dịch, bạn cần sử dụng thiết bị này để lấy mã.
– Soft Token: Soft Token là phần mềm được cài đặt trực tiếp trên máy tính hoặc thiết bị kết nối mạng như điện thoại, laptop, máy tính bảng. Phần mềm này cũng đảm nhiệm vai trò cung cấp mã Token cho bạn mỗi khi cần tiến hành giao dịch.
Việc sử dụng Token mang lại những lợi ích thiết thực như:
- Tiết kiệm thời gian và chi phí cho quá trình giao dịch
- Hỗ trợ nộp thuế trực tuyến nhanh chóng mọi lúc mọi nơi
- Nâng cao hiệu quả giao dịch, linh hoạt giải quyết các vấn đề phát sinh
- Có đội ngũ hỗ trợ hướng dẫn sử dụng và tư vấn chuyên nghiệp 24/7
- Kê khai được trong nhiều lĩnh vực: Hải quan, nộp thuế, BHXH,…
- Ngăn ngừa và giảm thiểu sai sót đáng kể khi nộp báo cáo tổng chi ngân sách
2. Ưu, nhược điểm khi sử dụng Token
Ưu điểm khi sử dụng Token
- Máy Token có kích cỡ nhỏ gọn, người dùng có thể dễ dàng mang theo để sử dụng
- Token được đánh giá là cách bảo mật an toàn nhất được ngân hàng khuyên dùng
- Hạn chế khả năng bị mất tiền do lỗi giao dịch
- Cách sử dụng máy Token dễ dàng, không gây tốn kém thời gian chờ đợi
- Lưu giữ thông tin tốt, đảm bảo bí mật
- Có khả năng lưu trữ lớn cùng tốc độ xử lý cao (32bit)
- Phù hợp với đông đảo người dùng
Nhược điểm khi sử dụng Token
- Khi cần dùng, bạn cần có máy Token thì mới có thể tiến hành giao dịch
- Chi phí để mua máy Token khá tốn kém, khoảng 200.000đ đến 400.000đ
- Mã Token chỉ có hiệu lực trong 60 giây nên cần thao tác nhanh chóng và chính xác
3. Cơ chế hoạt động và cách thức sử dụng Token
Đối với những ngành nghề có phát sinh và cần sử dụng giao dịch tài chính online thường xuyên như Cơ quan Thuế, ngân hàng,… , thiết bị Token và mã Token là yếu tố rất quan trọng giúp đảm bảo thông tin khách hàng không bị rò rỉ ra ngoài. Các ngân hàng thường cung cấp mã OTP qua máy Token để đạt được kết quả bảo mật tốt nhất.
Khi bạn tiến hành giao dịch chuyển tiền online, thanh toán hóa đơn, mua hàng online, … Token sẽ được kích hoạt cơ chế hoạt động riêng để tạo ra mã xác nhận giao dịch. Bạn chỉ cần ấn vào máy để lấy mã. Sau đó nhập chính xác mã này để xác nhận thì giao dịch mới được thông qua.
Mã OTP nếu được bằng hình thức thông báo qua SMS thì hầu hết các ngân hàng có E-Banking đều đang áp dụng chế độ miễn phí để thu hút khách hàng. Còn nếu muốn giao dịch với máy Token khách phải trả thêm phí để được cung cấp máy Token riêng. Hiện có những ngân hàng như HSBC, Sacombank, Techcombank,… có cung cấp máy Token.
Mỗi Token có một số series duy nhất từ 8 đến 10 ký tự. Khi nhấn nút, dãy các mã số ngẫu nhiên này sẽ xuất hiện và chỉ có hiệu lực trong 60 giây. Do đó, mỗi mã số Token chỉ có chỉ được sử dụng duy nhất với một giao dịch cụ thể. Bên cạnh đó, chuỗi số này được tạo ra bởi thuật toán rất phức tạp nên rất đảm bảo, không thể bẻ khóa dưới mọi hình thức.
4. API Token
1. Tổng quát về API Token
Session Cookie đã giải quyết phần nào các vấn đề gặp phải theo hình thức cũ nhưng không thể nói nó không có yếu điểm đặc biệt với các hệ thống lớn đòi hỏi mở rộng không ngừng. Để khắc phục các nhược điểm nêu trên, chúng ta có thể sử dụng API Token. Sau đây chúng ta sẽ đi vào tìm hiểu cách thức hoạt động của API Token và sao đó đi vào ví dụ cụ thể thông qua JWT.
Luồng hoạt động:
- Người dùng gửi thông tin xác thực tới hệ thống. (VD: username, password, v.v...)
- Hệ thống kiểm tra thông tin đăng nhập với dữ liệu lưu trong database.
- Thông tin đăng nhập chính xác, hệ thống khởi tạo một token độc nhất và gắn nó vào response gửi tới người dùng.
- Từ các bước sau nếu người dùng tạo một request mới sẽ thực hiện gửi đính kèm API token nhận được trước đó.
- Server sẽ kiểm tra token gửi đến và cấp quyền truy cập vào dữ liệu được bảo vệ.
Nhìn qua trên luồng hoạt động thì có vẻ token-base authentication không khác là mấy so với sử dụng session cookie nhỉ? Với một hệ thống nhỏ thì có lẽ sử dụng session cookie vẫn là một lựa chọn tốt. Nhưng nếu chúng ta bắt đầu mở rộng hệ thống xử lý trên nhiều server, ta sẽ bắt đầu thấy các điểm nổi bật của API token.
Giả sử nếu chúng ta muốn mở rộng hệ thống và thực hiện tách nhỏ ra một authenticate server riêng và server quản lý resources riêng, lúc này session cookies là không đủ và luồng hoạt động cho API token sẽ trở thàn
2. JWT là gì?
Giới thiệu
Để hiểu rõ hơn về API Token, sau đây chúng ta sẽ đi vào tìm hiểu một thể hiện cụ thể thông qua JSON Web Token.
JSON Web Token (JWT) là một hệ thống token-based authentication. Nó là một tiêu chuẩn (RFC 7519) dùng để định nghĩa hình thức truyền dữ liệu một cách bảo mật giữa các bên sử dụng một JSON object.
Cấu trúc JWT
Ở dạng nén của Json object, JWT bao gồm ba phần được ngăn cách nhau bởi dấu chấm "." bao gồm:
- HEADER
- PAYLOAD
- SIGNATURE
VD:
-
- Thuật toán mã hóa.
- Loại token.HEADER: Bao gồm hai phần:
- PAYLOAD: Bao gồm các thông tin về người dùng:
- Registered: Đây là các thông tin không bắt buộc nhưng được khuyến nghị sử dụng định nghĩa trong mục 4.1 của RFC 7519.
- Public: Đây là các thông tin tự định nghĩa bởi người sử dụng JWTs. Nhưng các thông tin này vẫn nên tránh trùng lặp với tên chuẩn của JWTs.
- Private: Đây là các thông tin được tạo để chia sẻ giữa các bên sử dụng và không phải là Registered hay Public.
- SIGNATURE: Sử dụng để xác thực JWT không bị biến đổi trong quá trình sử dụng. * Để tạo chữ ký điện tử này ta kết hợp sử dụng header, payload và một khóa bí mật chạy qua thuật toán mã hóa.
Kết hợp tất cả với nhau ta sẽ thu được JWT, các thông tin cần thiết để xác thực được gói gọn gàng trong một token. Nếu mọi người muốn thử nghiệm với các token này jwt.io cung cấp một công cụ thú vị để làm điều đó.
Ưu/Nhược điểm
- Ưu điểm:
- Tính mở rộng: Không giống session được quản lý riêng rẽ, JWT có thể hoạt động xuyên suốt nhiều server, cho phép dễ dàng mở rộng hệ thống.
- Có thể sử dụng với các ứng dụng non-browser. (VD: Ứng dụng di động)
- Hiệu năng: mỗi JWT là một gói đầy đủ các thông tin xác thực, thời gian hết hạn, v.v... được lưu trữ ngay phía client-side. Do đó, hệ thống không phải tra cứu quản lý các token như đối với session cookie cho phép cải thiện hiệu năng.
- Bảo mật: JWT được mã hóa đảm bảo JSON object không bị thay đổi trong suốt quá trình sử dụng.
- Nhược điểm:
- Kích cỡ: So với session cookie, JWT lớn hơn rất nhiều vì nó bao gồm đầy đủ thông tin xác thực, thời gian hết hạn, v.v... Đây cũng chính là lý do tên các claims thường chỉ bao gồm 3 ký tự để giữ token gọn nhẹ nhất có thể. Có thể hiểu đơn giản rằng JWT hoán đổi giữa kích cỡ và tốc độ.
- JWT có thể bị tấn công bởi CSRF hay XSS. Để chống lại các hình thức tấn công này, nhà phát triển có thể thêm các bước để đảm bảo request được gửi đến từ các trang web an toàn.
Vậy thông qua bài viết trên chúng ta đã biết được cách xác thực người dùng sử dụng HTTP truyền thống và sử dụng JWT. Tuy nhiên, ở đây mình cũng muốn nhấn mạnh rằng HTTP hoàn toàn là một lựa chọn khả thi để xác thực người dùng nếu website của bạn không đòi hỏi mở rộng hay có quy mô lớn bởi tính đơn giản gọn nhẹ dễ cài đặt của hình thức HTTP. Nếu mọi người có câu hỏi gì xin hãy comment ở bên dưới.
Nội dung bài viết:
Bình luận