Bài viết bạn dạng quyền ở trong Phạm quang đãng Minh - Minh Monmen. baf.edu.vn đăng bài có sự cho phép của tác giảLink bài viết gốchttps://kipalog.com/posts/Authentication-story-part-1--Authentication-la-lam-giThầy Minh lúc này là giảng viên baf.edu.vnKhoá học Lộ trình DevOps cho cá nhân và doanh nghiệp.
Bạn đang xem: Cách lập trình viên xử lý password của người dùng
!!!WARNING!!!Series này chứa đựng nội dung rất là dài loại và những suy xét hết mức độ rối rắm của một xây dựng viên giao tiếp kém. Mong mỏi quí vị và các bạn hết sức cảnh giác và không nguy hiểm khi đọc.First things first
Mình gần đây ngoài bài toán viết code ra thì còn được sếp ưu ái cho đi phỏng vấn các ứng viên. Khốn một nỗi là mình thì khá non kinh nghiệm nên thường không biết hỏi tín đồ ta câu gì. Cố gắng rồi trong một lần phỏng vấn ngẫu hứng, mình mới hỏi chúng ta đối diện:Bạn làm biện pháp nào nhằm đăng nhập người tiêu dùng vào hệ thống?Ơ... Thì em mang đến user nhập username, password rồi singin thôi ạ.Không mình muốn bạn biểu đạt lại quá trình ấy chi tiết hơn cơ.Thì user đã nhập username, password, khối hệ thống sẽ kiểm tra với db, nếu như đúng thì đăng nhập, còn không thì vẫn báo lỗi.Ừ dẫu vậy làm cách nào để hệ thống biết là người đó đã đăng nhập?...Và nuốm là buổi vấn đáp dừng rất cấp tốc sau đó, vì mình phân biệt là ứng viên của mình dù đã đi làm backend mấy năm tuy vậy lại không thể biểu lộ lại một thừa trình cực kì basic của xây dựng web, mặc dầu chỉ là một phương thức nào đó quen thuộc.Sau khi nhận ra sự thật tưởng ngàng ấy, mình liên tiếp hỏi những các bạn ứng viên sau cũng chính với thắc mắc này, tuy nhiên không có lần nào cảm nhận câu vấn đáp chạm tới tí xíu như thế nào của vấn đề. Sau đây là một số câu trả lời:Em sử dụng passport nhằm đăng nhập fan dùng.Thế bạn có hiểu passport vận động thế nào không?...Bạn khácEm chế tạo ra 1 mẫu form có username/password rồi submit. Hệ thống sẽ kiểm tra và trả về hiệu quả đã đăng nhập.Ừ thế tiếp nối tại sao website lại biết ai đang đăng nhập?Chắc nó tất cả lưu đâu đó....Một các bạn khác:Em không nhớ rõ lắm, vì chưng cái kia framework nó cung ứng hết rồi.Ừ nhưng bạn cũng đề nghị hiểu nó vận động như vậy nào chứ?À dòng đó thì em chưa lưu ý lắm.Sau đợt chất vấn ấy, mình quyết định sẽ viết cái gì đấy này để chất vấn lại phát âm biết của mình cũng như né việc đa số chúng ta quên mất điều căn bạn dạng này lúc đi phỏng vấn hay vào công việc.Để hoàn toàn có thể phác họa cho chúng ta một tranh ảnh đầy đủ, toàn cảnh về những kiến thức và kỹ năng liên quan lại tới authentication, mình sẽ chia nội dung bài viết ra làm các phần để chúng ta đọc đỡ chán:Phần 1: Authentication là có tác dụng gì?Phần 2: Authentication cơ bảnPhần 3: những phương thức xác xắn hay dùngPhần 4: Best practicesSeries rất có thể có phần 5, phần 6 nếu mình nghĩ về ra cái nào đấy để nói thêm =))Đối tượng và số lượng giới hạn kiến thức
Trong phần 1 này, mình đang nói vềbản hóa học của quy trình xác thực fan dùngvới cácứng dụng web. Và vì chưng series này dành cho những người làm câu hỏi vớiWeb API,Web service, buộc phải sẽ cân xứng với các đối tượng người sử dụng nhưweb developer,mobile developer.Thứ 2, chúng ta cần có nền tảngkiến thức về web cơ bản, gọi được khái niệmHTTP request(định nghĩa, cấu trúc, cú pháp). Đây là vấn đề cốt yếu để các bạn hiểu được thực chất của vấn đề, tránh bị phần nhiều khái niệm rối rắm nhan nhản như OAuth, Token-based, Passwordless,... Tạo nên quay cuồng.Nếu các bạn chưa trang bị cho doanh nghiệp những kỹ năng và kiến thức trên, mình đề nghị bạn nên đọc trước khi thường xuyên với nội dung bài viết này. Còn nếu đang có, thì hãy tiếp tục xả thân vào cuộc phiêu dạt tưởng chừng đơn giản mà vô cùng băn khoăn này.Authentication là gì?
Thể theo có mang của wikipedia,một website rất nổi tiếng và cũng chả phải lời chú giải dài chiếc thừa thãi này:Xác thực (authentication) là một hành vi nhằm thiết lập cấu hình hoặc xác thực một cái gì đấy (hoặc một tín đồ nào đó) đáng tin cậy, gồm nghĩa là, phần đông lời khai báo do bạn đó giới thiệu hoặc về đồ gia dụng đó là sự việc thật.Quả là một trong định nghĩa ko những to lớn mà còn mang tính bao quát những mặt của vấn đề. Một ghê nghiệm không nhỏ khi các bạn tiếp cận quan niệm nào đó chính là đưa nó về một ngữ cảnh chũm thể. Mẫu định nghĩa authentication cơ mà wikipedia đưa ra nó bao hàm rất nhiều thứ, và khi vận dụng vào mỗi trả cảnh cụ thể nó lại có một ý nghĩa khác nhau.Ví dụ cùng là authentication trong áp dụng web thì nó rất có thể xuất hiện tại ở những lớp nghĩa khác nhau:VD1: vấn đề server xác thựcyêu cầudo và đúng là từ client của người tiêu dùng gửi lên hay không cũng là authentication.VD2: vấn đề server xác thựcnội dung yêu thương cầudo đúng từ người tiêu dùng A giữ hộ lên hay là không cũng là authentication.Với 2 lớp nghĩa này, các bạn cũng có thể tưởng tượng như sinh hoạt VD1 là xác thựccái phong bì, khám nghiệm tem thư, add gửi xem có đúng là từ thôn cành cây xã cành cây huyện trời mây gửi đến hay không, rồi thì phong bì gồm bị tách hay chưa, còn niêm phong không. Còn VD2 là xác thựcnội dung thư, đánh giá chữ cam kết xem có chính xác là của anh tương đối từ trại không,...Tuy nhiên, việc kiểm tracái phong bìthường là vấn đề của một phần tử dev khác, tương quan tới hệ thống nhiều hơn, do vậy mình sẽ không đề cập nhiều tới trong bài viết này. Các bạn chỉ nên hiểu được nó là quá trình gì thôi là được. Từ trên đây về sau thời điểm mình kể tớiauthenticationtức là sẽ nói đến việcxác thực người dùngở cấp cho ứng dụng, hay đó là cáithư được nhờ cất hộ từ ainhé.Bản chất của authentication?
Vậy thì họ làm sao hiểu rằng thư này được gửi đến từ anh tương đối mà chưa hẳn từ một thằng ất ơ làm sao mạo danh? bọn họ cũng đều biết Website, website service được tạo cho từ cácHTTP request.Ví dụ bạn vào website facebook.com. Đầu tiên trình duyệt điện thoại tư vấn 1 HTTP request tới facebook.com để lấy nội dung HTML. Kế tiếp lại gọi các HTTP request cho tới lấy ngôn từ JS, css, ảnh,... Rồi lại gọi những HTTP request để đưa danh sách bạn bè, bài xích đăng,... Có toàn bộ những thông tin này, trình duyệt bắt đầu hiển thị cho bạn được trang facebook với rất nhiều nội dung và liên hệ như thế.Tuy nhiên, về cơ phiên bản thìHTTP request là một trong những stateless protocol(HTTP2 tất cả stateful component nhưng mà cơ bạn dạng HTTP vẫn là stateless).Statelessnghĩa là sao? tức là server xử lý những request một cáchđộc lập, không dựa vào vào tâm trạng hay công dụng của request trước.Stateless/stateful là tính chất mang ý nghĩa tương đối. Dưới góc nhìn protocol thì HTTP là stateless, tuy vậy dưới góc nhìn application thì ta đang gắng làm nó vươn lên là stateful.Cái này cũng tương tự 2 người thư từ với nhau, mỗi lá thư làđộc lập. Lá thư trước tiên gửi từ địa chỉ A mình tin là của anh Khá, dẫu vậy lá thư thứ 2 cũng từ showroom A gửi trao thì mình chưa dĩ nhiên đã tin cùng lại phải xác nhận lại.Xem thêm: Viết Gọn Các Tích Sau Bằng Cách Dùng Lũy Thừa :, Viết Gọn Các Tích Sau Bằng Cách Dùng Lũy Thừa
Vì thế bản chất của authentication làm việc đây đó là việc chúng ta xác nhậnHTTP requestđược gửi từmột fan nào đó.