Basic Authentication



  • Mở đầu

Chào các bạn, cũng lâu lắm rồi mình chưa ra bài viết mới. 1 phần cũng vì bận quá, 1 phần cũng do lười, 1 phần nữa cũng do chưa có ý tưởng gì cho các bài viết của mình.
Chả là đợt này mình đang hệ thống hóa lại tất cả các kiến thức từ cơ bản tới nâng cao nên đây sẽ là 1 seri về Authentication của mình.
Khởi đầu của phần 1 này như tiêu đề các bạn thấy : BASIC AUTHENTICATION

  • Cấu trúc bài viết:

  1. Định nghĩa
  2. Cách hoạt động
  3. Một số khái niệm xung quanh, note
  4. Kết luận

  1. Định nghĩa 

  • Authentication:

 - Là một quá trình trình bày thông tin đăng nhập của bạn cho hệ thống và hệ thống xác thực thông tin đăng nhập của bạn. Những thông tin này cho hệ thống biết bạn là ai. Cho phép hệ thống đảm bảo và xác nhận danh tính người dùng. Ở đây hệ thống có thể là bất cứ thứ gì, nó có thể là một máy tính, điện thoại, ngân hàng hoặc bất kỳ cơ sở văn phòng vật lý nào.

  • Basic authentication: 
Website sử dụng basic authentication

- Hiểu 1 cách đơn giả thì nó là phương thức để xác thực người dùng khi truy cập tài nguyên thông qua HTTP(s)
- Thông tin đăng nhập được gửi kèm theo mỗi request
- Cấu trúc header sẽ có thêm :
   Authorization: Basic <Base 64 endcode {username:password}>

2. Cách hoạt động

  • Bước 1

step 1


Người dùng truy cập vào đường dẫn(URL) nào được được bảo vệ bằng basic authentication

  • Bước 2

Server check nếu request có header Authorization  và với username, password có hợp lệ hay không?
- Nếu hợp lệ, thì trả về status: 200, và cho phép truy cập
valid username and password

- Nếu không hợp lê, thì trả về status: 401 Unauthorized
not valid username and password


- Lưu ý: 

Khi server trả response cho client, thì có kèm theo 1 chuỗi là www-authenticate: Basic realm="MyApp"


  • Bước 3

- Trình duyệt nhận thấy có www-authenticate trong header trả về, sau đó hiện thị hộp thoại cho thông tin đăng nhập (thường thấy là hộp thoại hiện lên trên cùng bên phải trang web)

  • Bước 4

- Người dùng gửi thông tin đăng nhập. Trình duyệt sẽ mã hóa bằng Base64, sau đó gửi kèm theo header của request. Thông tin đăng nhập có dạng
   Authorization: Basic <Base 64 endcode {username:password}>

  • Bước 5
- Quay lại bước 2.

3. Một số khái niệm xung quanh, note

-Realm: Là nhóm các trang web có chung thông tin đăng nhập. Trình duyệt có thể cache những thông tin đăng nhập hợp lệ lại cho realm. Có thể sử dụng lại trong tương lại. (Đương nhiên, là trình duyệt sẽ không tự động làm việc này, mà sẽ hỏi bạn có đồng ý thực hiện không)



- "MyApp": Giá trị của realm, có thể là bất cứ đoạn text nào đó, do Server có trách nhiệm định nghĩa realms và xử lý xác thực người dùng.

- Basic Authentication không được coi là an toàn khi không sử dụng cùng với TLS/HTTPS( mình sẽ có bài viết về phần này sau nhé). Lý do thì đơn giản thôi, bất kì ai cũng có thể lấy và giải mã thông tin xác thực của bạn(Vì mã hóa bằng base64, khá đơn giản, trên mạng hiện giờ có rất nhiều các giải mã cái này rồi)

4. Kết luận

  • Basic Authentication là phương pháp xác thực cơ bản nhất mà bạn nên biết.
  • Tuy cơ bản, nhưng cho đến hiện nay, một số trang web cũng vẫn dùng cách này để xác thực người dùng.

Cảm ơn các bạn đã đọc bài viết đến hết. Mình rất mong góp ý của các bạn để mình có thể ở các bài viết tới.
Thân!

Nguồn tham khảo:

Tiến đẹp trai 17/07/20 17:04 - Reply
Con playmoutain hình như trước dùng cái này, không biết đã đổi hay gì chưa :v Góp ý: - Anh có thể viết chi tiết hơn 1 chút. Nó là cách đơn giản nhất để đăng nhập bởi vì chỉ cần thông tin username, password mà client nhập vào. Không cần cookies, không session, hay bất cứ thứ gì khác. - Nó chỉ phục vụ việc đăng nhập, không có logout, forget .v..v - Password phải được base64 thì server mới nhận, nếu không mã hóa thì server sẽ trả về status 400 Bad request(Anh chỉ nói việc browser mã hóa base64) - Nó khá đơn giản nhưng có thể dùng trong trường hợp nào không?? Hay thôi chả dùng nữa?? không thấy anh nói đến - "Hiểu 1 cách đơn giả thì nó là phương thức để xác thực người dùng khi truy cập tài nguyên thông qua HTTP(s)". Đoạn cuối bắt buộc sử dụng HTTPS hay là HTTP hoặc HTTPS đều được, nhìn này e thấy hơi khó hiểu. Nếu cả 2 thì e nghĩ nên ghi cụ thể HTTP hoặc HTTPS.
Admin 17/07/20 18:53
HTTP, hay HTTPs đều được em nha, nhưng vấn đề là HTTP thường thì nó sẽ không có mã hóa của ssl, tức HTTPs, nên khả năng bị bắt request rồi decode là cao hơn em nha

Tiến đẹp trai 17/07/20 17:05 - Reply
Chưa làm chức năng show comment à anh? Chỉ có gửi kín thế này thôi à a :v Với nữa khi e comment e chưa điền name và email, ấn Comment luôn. Validate phải giữ lại comment của e chứ, bắt gõ lại thấy mệt lunnn á :v
Admin 17/07/20 18:51
Gõ lại đi cho đẹp trai em ạ. tiến đẹp trai mà lại không cần cù rồi
Tiến đẹp trai 1 09/09/20 17:07
Khi reply thì có nên gửi mail cho người comment không anh nhỉ ? Chứ không như a reply e chả biết a reply lúc nào :v vào lại blog thì mới thấy à reply rồi :v
Admin 10/09/20 13:18
Nhà nghèo lắm, đang cầy tiền để dùng được send mail em ạ :) @Tiến đẹp trai 1

Leave a reply

Success Comment, please wait admin approved

Your email address will not be published !

EST. READING TIME less than a minute
STAT 172 Views
Shared Facebook Twitter Reddit