CÔNG NGHỆ THÔNG TIN >> BÀI VIẾT CHỌN LỌC

Authentication và Authorization trong việc bảo mật ứng dụng Web

Đăng lúc: 08:48 AM - 10/11/2023 bởi Charles Chung - 632

Authentication và Authorization là hai quá trình nhận diện và xác định quyền hạn của người dùng khi truy cập vào các tài nguyên của ứng dụng. Trong bài viết này tôi sẽ minh họa và giải thích rõ các khái niệm này.

1. Authentication là gì? 

Authentication (tạm dịch: xác thực)  là quá trình kiểm tra danh tính một tài khoản đang vào hệ thống hiện tại thông qua một hệ thống xác thực. Đây là bước ban đầu của mọi hệ thống có yêu cầu về nhận biết người dùng hoặc có yêu cầu lưu trữ các hành động cá nhận hoá của từng người dùng riêng. Hiểu đơn giản, Authentication là quá trình đi tìm câu trả lời cho câu hỏi “Bạn là ai?”

2. Authorization là gì?

Authorization (tạm dịch: được phép) là quá trình để xác định người dùng được xác thực có quyền truy cập vào các tài nguyên cụ thể hay không. Nó xác minh quyền của bạn để cấp cho bạn quyền truy cập vào các tài nguyên như thông tin, cơ sở dữ liệu, file, Authorization thường được đưa ra sau khi xác thực xác nhận các đặc quyền thực hiện của bạn. Nói một cách đơn giản hơn, nó giống như cho phép ai đó chính thức làm điều gì đó hoặc bất cứ điều gì.

Như vậy, mặc dù cả hai quá trình là khác nhau nhưng chúng bổ trợ cho nhau để giúp hệ thống có thể định danh một phiên làm việc của người dùng bất kỳ và xác định quyền hạn, khả năng của phiên làm việc đó.

3. Authentication trong việc bảo mật website

Khi phát triển ứng dụng website, có một số cách phổ biến để thực hiện việc xác thực (Authentication) như sau:

  • Tài khoản – mật khẩu: Đây là cách phổ biến nhất để xác thực tài khoản trong lập trình web. Người dùng sẽ nhập tên đăng nhập và mật khẩu để truy cập vào hệ thống. Một số giải pháp thường gặp cho quá tình sử dụng tài khoản – mật khẩu để đăng nhập có thể liệt kê như:
    • Triển khai đăng nhập Cookie + session: Phương thức đăng nhập Cookie + Session là phương pháp đăng nhập cổ điển nhất và vẫn được một số lượng lớn các doanh nghiệp sử dụng. Khi người dùng đăng nhập lần đầu tiên thành công thì một SessionID được sinh ra+ thông tin người dùng và lưu về cookies client, các request tiếp theo SessionID+thông tin người dùng sẽ được gửi kèm tới webserver để xác thực thay vì phải đăng nhập lại.
    • Triển khai đăng nhập sử dụng Token (thường dùng với Web API): Khác với việc tận dụng các bộ nhớ có sẵn của server là session, việc xác thực bằng token yêu cầu người dùng phải lưu một chuỗi các ký tự ở bộ nhớ client (bộ nhớ của người sử dụng) với lần đầu tiên gửi yêu cầu xác thực bằng tài khoản và mật khẩu, hệ thống sẽ tạo cho người dùng một token (được mã hoá bởi các thuật toán mã hoá khác nhau) với mục đích người dùng sẽ sử dụng token vừa được cung cấp như một chiếc vé cho các lần truy vấn tiếp theo. Hệ thống server nhận token sẽ tiến hành dịch ngược và xác định được người dùng đang truy vấn là ai.
  • Chứng thực OAuth: OAuth là một tiêu chuẩn cho việc chứng thực sử dụng tài khoản xã hội như Facebook, Google hoặc Twitter. OAuth là viết tắt của Open với Authentication hoặc Authorization. OAuth ra đời nhằm giải quyết các vấn đề trên và trên hết, đây là một phương thức chứng thực giúp các ứng dụng có thể chia sẻ tài nguyên với nhau mà không cần chia sẻ thông tin username và password. OAuth bao gồm bốn vai trò khác nhau
    • Resource Server: REST API là một ví dụ, một máy chủ HTTP nơi người dùng có thể tạo, sửa đổi hoặc xóa các bản ghi, tài liệu hoặc tệp.
    • Resource Owner: Duy trì quyền sở hữu tài nguyên mà người dùng đã tạo hoặc sửa đổi trên máy chủ và người ủy quyền cho ứng dụng bên thứ 3 truy cập vào tài khoản của họ. Ứng dụng của bên thứ 3 có quyền truy cập hạn chế vào tài khoản của người dùng, dựa trên phạm vi của phạm vi của ủy quyền được cấp.
    • Client: Ứng dụng bên thứ 3 muốn truy cập vào tài khoản người dùng. Trước khi nó có thể làm như vậy, máy chủ Resource/Authorization và chủ sở hữu tài nguyên phải ủy quyền cho yêu cầu đó. Mọi khách hàng phải được đăng ký với máy chủ Authorization và sẽ được cung cấp cho nó thông tin xác thực duy nhất của riêng mình (client_id và client_secret) để xác thực riêng.
    • Authorization Server (thường là giống Resource Server): Đôi khi, ta có thể muốn rút ra khỏi máy chủ authorization từ máy chủ resource và triển khai nó như một phiên bản chuyên dụng, đặc biệt là trong các môi trường phân tán.
  • Chứng thực dựa trên vấn đề thiết bị: Đây là một cách xác thực tài khoản dựa trên vấn đề của thiết bị. Ví dụ, một mã QR hoặc mã số được tạo ra từ một thiết bị và nhập vào một thiết bị khác để xác thực tài khoản.

Mỗi phương pháp được liệt kê ở trên đều có điểm mạnh riêng của nó, hi vọng mỗi lập trình viên đã biết cách lựa chọn cách xác thực tài khoản phụ thuộc vào yêu cầu bảo mật của hệ thống hoặc dịch vụ.

4. Một số ví dụ triển khai bảo mật website

 

thay lời cảm ơn!

QUẢNG CÁO - TIẾP THỊ