AUTHENTICATION LÀ GÌ

     

Series này tiềm ẩn nội dung rất là dài dòng và những cân nhắc hết mức độ rối rắm của một thiết kế viên tiếp xúc kém. Mong muốn quí vị và các bạn hết sức cảnh giác và không nguy hiểm khi đọc.

Bạn đang xem: Authentication là gì

First things first

Mình cách đây không lâu ngoài bài toán viết code ra thì còn được sếp ưu ái cho đi bỏng vấn các ứng viên. Khổ một nỗi là mình thì khá non kinh nghiệm tay nghề nên thường chẳng biết hỏi bạn ta câu gì. Vắt rồi trong một lần chất vấn ngẫu hứng, mình bắt đầu hỏi các bạn đối diện:

Bạn làm bí quyết nào để đăng nhập người tiêu dùng vào hệ thống?Ơ... Thì em đến user nhập username, password rồi đăng nhập thôi ạ.Không mình thích bạn biểu hiện lại quy trình ấy cụ thể hơn cơ.Thì user đang nhập username, password, khối hệ thống sẽ kiểm tra với db, nếu đúng thì đăng nhập, còn không thì vẫn báo lỗi.Ừ mà lại làm biện pháp nào để hệ thống biết là người đó đã đăng nhập?...

Và rứa là buổi vấn đáp dừng rất cấp tốc sau đó, vì chưng mình nhận biết là ứng viên của mình dù đã đi làm việc backend mấy năm nhưng mà lại ko thể biểu thị lại một quá trình rất là basic của lập trình sẵn web, cho dù chỉ là một phương pháp nào kia quen thuộc.

Sau khi nhận biết sự thật ngỡ ngàng ấy, mình liên tục hỏi những các bạn ứng viên sau cũng bao gồm với thắc mắc này, tuy nhiên không tồn tại lần nào cảm nhận câu vấn đáp chạm cho tới tí xíu làm sao 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 tín đồ dùng.Thế các bạn có gọi passport hoạt động thế làm sao không?...

Bạn khác

Em sản xuất 1 mẫu form bao gồm username/password rồi submit. Server sẽ kiểm tra và trả về công dụng đã đăng nhập.Ừ thế kế tiếp tại sao website lại biết nhiều người đang đăng nhập?Chắc nó bao gồm lưu đâu đó....

Một các bạn khác:

Em ko nhớ rõ lắm, vì chưng cái đó framework nó hỗ trợ hết rồi.Ừ nhưng các bạn cũng đề xuất hiểu nó vận động như vậy nào chứ?À chiếc đó thì em chưa xem xét lắm.

Sau đợt chất vấn ấy, mình quyết định sẽ viết cái gì đấy này để đánh giá lại hiểu biết của bản thân mình cũng như kiêng việc nhiều người quên mất điều căn bạn dạng này khi đi vấn đáp hay vào công việc.

Để có thể phác họa cho chúng ta một bức ảnh đầy đủ, toàn cảnh về những kỹ năng liên quan tới authentication, mình vẫn chia bài viết ra làm các phần để chúng ta đọc đỡ chán:

Phần 1: Authentication là làm 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 practices

Series rất có thể có phần 5, phần 6 nếu như mình suy nghĩ ra cái gì đấy để nói thêm =))

Đối tượng và giới hạn kiến thức

Trong phần 1 này, mình sẽ nói về bản chất của quá trình xác thực tín đồ dùng với các ứng dụng web. Và bởi series này dành cho tất cả những người làm bài toán với Web API, Web service, nên sẽ tương xứng với các đối tượng người sử dụng như web developer, mobile developer.

Thứ 2, các bạn cần có căn nguyên kiến thức về web cơ bản, gọi được định nghĩa HTTP request (định nghĩa, cấu trúc, cú pháp). Đây là vấn đề cốt yếu hèn để chúng ta hiểu được bản chất của vấn đề, kị bị đa số khái niệm rối rắm nhan nhản như OAuth, Token-based, Passwordless,... Làm cho quay cuồng.

Nếu các bạn chưa trang bị cho mình những kỹ năng và kiến thức trên, mình ý kiến đề nghị bạn đề nghị đọc trước khi liên tiếp với bài viết này. Còn nếu sẽ có, thì nên tiếp tục lao vào vào cuộc linh cảm tưởng chừng đơn giản mà vô cùng rắc rối này.

Authentication là gì?

Thể theo quan niệm của wikipedia, một trang web rất khét tiếng và cũng chả yêu cầu lời chú giải dài cái thừa thãi này:

Xác thực (authentication) là một hành động nhằm tùy chỉnh cấu hình hoặc xác thực một cái nào đó (hoặc một bạn nào đó) xứng đáng tin cậy, gồm nghĩa là, những lời khai báo do bạn đó đưa ra hoặc về đồ gia dụng đó là việc thật.

Quả là một trong những định nghĩa ko những rộng lớn mà còn mang tính bao quát nhiều mặt của vấn đề. Một khiếp nghiệm không nhỏ khi chúng ta tiếp cận có mang nào đó chính là đưa nó về một ngữ cảnh rứa thể. Loại định nghĩa authentication mà lại wikipedia đưa ra nó bao hàm rất nhiều thứ, cùng khi vận dụng vào mỗi trả cảnh rõ ràng nó lại sở hữu một chân thành và ý nghĩa khác nhau.

Ví dụ cùng là authentication trong ứng dụng web thì nó hoàn toàn có thể xuất hiện ở các lớp nghĩa không giống nhau:

VD1: việc server xác xắn yêu cầu do và đúng là từ client của người dùng gửi lên hay không cũng là authentication.VD2: việc server chuẩn xác nội dung yêu thương cầu bởi đúng từ người tiêu dùng A gởi lên hay không cũng là authentication.

Với 2 lớp nghĩa này, các chúng ta có thể tưởng tượng như nghỉ ngơi VD1 là đúng đắn cái phong bì, soát sổ tem thư, địa chỉ gửi coi có và đúng là từ thôn cành lá xã cành lá huyện trời mây gửi mang đến hay không, rồi thì phong bì bao gồm bị bóc tách hay chưa, còn niêm phong không. Còn VD2 là chính xác nội dung thư, chất vấn chữ ký kết xem có chính xác là của anh khá từ trại không,...

Tuy nhiên, bài toán kiểm tra cái phong bì hay là câu hỏi của một bộ phận dev khác, tương quan tới khối hệ thống nhiều hơn, do vậy mình sẽ không còn đề cập các tới trong nội dung bài viết này. Các bạn chỉ yêu cầu hiểu được nó là quá trình gì thôi là được. Từ phía trên về sau khoản thời gian mình nhắc đến authentication có nghĩa là sẽ nói tới việc xác thực fan dùng ở cấp ứng dụng, hay đó là cái thư được gửi từ ai nhé.

Bản hóa học của authentication?

Vậy thì họ làm sao biết được thư này được gửi đến từ anh tương đối mà không hẳn từ một thằng ất ơ làm sao mạo danh? bọn họ cũng đầy đủ biết Website, web service được khiến cho từ những HTTP request.

Xem thêm: Xe Ủy Quyền Có Bị Phạt Không ? Xe Ủy Quyền Có Bị Phạt Không

Ví dụ bạn vào trang web facebook.com. Đầu tiên trình duyệt điện thoại tư vấn 1 HTTP request cho tới facebook.com để lấy nội dung HTML. Tiếp nối lại gọi những HTTP request cho tới lấy văn bản JS, css, ảnh,... Rồi lại gọi các HTTP request để đưa danh sách bạn bè, bài xích đăng,... Có tất cả những thông tin này, trình duyệt mới hiển thị cho bạn được trang facebook với không ít nội dung và liên quan như thế.

Tuy nhiên, về cơ phiên bản thì HTTP request là một stateless protocol (HTTP2 bao gồm stateful component cơ mà cơ phiên bản HTTP vẫn là stateless). Stateless tức là sao? có nghĩa là server xử lý các request một biện pháp độc lập, không dựa vào vào trạng thái hay hiệu quả của request trước.

Stateless/stateful là tính chất mang tính tương đối. Dưới góc nhìn protocol thì HTTP là stateless, mặc dù dưới góc độ application thì ta đang nuốm làm nó đổi mới stateful.

Cái này cũng giống như 2 bạn thư từ với nhau, mỗi lá thư là độc lập. Lá thư đầu tiên gửi từ địa chỉ cửa hàng A mình tin là của anh ý Khá, nhưng lại lá thư thứ hai cũng từ showroom A thân tặng thì bản thân chưa kiên cố đã tin cùng lại phải xác thực lại.

*

Vì thế bản chất của authentication ở đây đó là việc bạn chứng thực HTTP request được gửi từ một fan nào đó.

*

Authentication được thực hiện như vậy nào?

Các bạn đã hiểu bản chất của authentication rồi, vậy thì nó sẽ được thực hiện như thế nào?

Đối với một bức thư, cách để bạn biết thư được gởi đúng từ 1 người nào đó là chữ ký, nét chữ,... Hay bất kỳ một dấu hiệu nào đó được thống nhất trường đoản cú trước thân 2 người.

Quay trở về với một HTTP request. Bản chất của HTTP request cũng chính là một bản tin màn biểu diễn bằng text. Do đó cũng sẽ cần một dấu hiệu nào này được thống nhất để áp dụng của họ nhận ra nó khởi thủy từ người tiêu dùng nào.

Một dấu hiệu nhận biết người dùng hoàn toàn có thể là bất kỳ thứ gì mang ý nghĩa đặc trưng, như tên đăng nhập, mật khẩu, một chuôĩ chứa tin tức được mã hóa, hay thậm chí là là một chuỗi ký kết tự random.Dấu hiệu nhận ra người dùng có thể ở ngẫu nhiên vị trí nào rất có thể trong phiên bản tin HTTP như: URL, Header (Cookie header, Authorization header, Custom header), Body (Form field,...)

*

Minh họa thực hiện 1 trong số vị trí trên.

Quá trình authentication

Để giành được dấu hiệu dấn dạng phía trên, ta cần có sự thống nhất trước giữa người tiêu dùng và áp dụng để áp dụng của bạn có thể nhận dạng được người dùng. Một quá trình authentication sẽ bao hàm 3 phần:

Sinh ra vết hiệu: Đây là việc họ quyết định coi dùng tín hiệu gì, tạo ra dấu hiệu đó như thế nào. Một quá trình authentication hoàn toàn có thể có sự xuất hiện của khá nhiều dấu hiệu, lấy một ví dụ username/password, user token, api key,... Các dấu hiệu này sẽ sở hữu cách xuất hiện khác nhau, quy ước sử dụng khác nhau.Lưu trữ vết hiệu: Đây là việc ứng dụng sẽ quyết định lưu trữ tín hiệu này sống đâu, ở cả server với client, trải qua vị trí nào trên bản tin HTTP,...Kiểm tra lốt hiệu: Đây là việc ứng dụng của bọn họ kiểm tra lại tính hòa hợp lệ của vết hiệu, đối chiếu xem dấu hiệu này là của người tiêu dùng nào,...

*

Phía trên hình ảnh là ví dụ quy trình authentication, trong những số đó mỗi request tùy ở trong vào tin tức đầu vào sẽ được xử lý qua một hoặc phần lớn của quy trình authentication.

Tổng kết

Trên đây đó là những khái niệm cơ bản nhất về authentication. Cho dù cho là bạn dùng Basic Authentication, Single Sign-on, OAuth 2.0, Social Sign-in,... Xuất xắc là phương thức nào đi chăng nữa thì chung quy lại cũng hầu như là thao tác làm việc sau:

Xác thực một HTTP request bằng một dấu hiệu nào đó.

Còn việc xuất hiện thêm ra những phương thức xác thực phía bên trên nó chỉ là ở 3 việc:

Tạo ra tín hiệu gìLưu trữ tín hiệu ở đâuKiểm tra tín hiệu thế nào

Nắm ăn điểm cơ bạn dạng này, mình tin các các bạn sẽ tiếp cận với toàn bộ các hình thức authentication dưới một chiếc nhìn khác với tính hệ thống hơn.

Xem thêm: Ví Bitcoin Wallet Là Gì ? Cryptocurrency Wallet Từ A Ví Bitcoin Là Gì

Hẹn gặp gỡ lại chúng ta trong Phần 2: Authentication cơ bản, khu vực mình đang nói kỹ hơn về những phương thức xác thực người tiêu dùng cơ bản.