○ Tích hợp dễ dàng với Single Sign-On SSO: JWT có thể được sử dụng trong các hệ thống Single Sign-On để xác thực người dùng một lần và truy cập nhiều ứng dụng khác nhau mà không cần phả
Trang 1ĐẠI HỌC UEH TRƯỜNG CÔNG NGHỆ VÀ THIẾT KẾ KHOA CÔNG NGHỆ THÔNG TIN KINH DOANH
BỘ MÔN CÔNG NGHỆ THÔNG TIN
Trang 2STT Họ và tên Phân công công việc % đóng góp vào dự án
- 2 Tổng quan về xác thực người dùng
và JSON Web Tokens (JWT):
- Thiết kế bài trình chiếu
100%
2 Lê Phi Long
- 1 Xác thực người dùng
- 1.1 Định nghĩa và vị trí quan trọng trong hệ thống
- 1.2 Phương pháp xác thực truyền thống và hiện đại
- Thiết kế bài trình chiếu
100%
Thế Duy
- 2 JSON Web Tokens (JWT)
- 2.1 Khái niệm, cấu trúc và tính năng
- 2.2 Quy trình xác thực người dùng với JWT
- Thiết kế bài trình chiếu
- IV Đánh giá và kết luận
- 1 Ưu điểm và giới hạn, rủi ro của việc sử dụng JWT trong xác thực người dùng
- 2 So sánh với các phương pháp xác thực khác
Trang 31 Ưu điểm và giới hạn, rủi ro của việc sử dụng JWT trong xác thực người dùng 21
Trang 4LỜI CẢM ƠN
Em muốn bày tỏ lòng biết ơn chân thành và sâu sắc đến Thầy về sự hỗ trợ và sự hướng dẫn trong suốt quá trình thực hiện dự án này Những lời khuyên, sự động viên và kiến thức mà Thầy đã chia sẻ với em không chỉ giúp em vượt qua những thách thức mà còn là nguồn động viên lớn giúp em hiểu sâu hơn về chủ đề và phát triển kỹ năng của mình Với sự kiên nhẫn và tận tâm của Thầy đã truyền cảm hứng cho em mỗi khi gặp khó khăn trong quá trình nghiên cứu và phân tích Thầy không chỉ là một người hướng dẫn mà còn
là một người bạn, luôn sẵn lòng lắng nghe và hỗ trợ em trong mọi tình huống
Cùng với đó, em cũng muốn gửi lời cảm ơn em tất cả các thành viên trong nhóm Sự hợp tác và sự đồng lòng của chúng em đã tạo ra một môi trường làm việc tích cực và hiệu quả, giúp chúng em hoàn thành dự án một cách thành công
Mỗi bước tiến trong dự án này đều có sự đóng góp quý báu từ Thầy, và em xin bày tỏ lòng biết ơn sâu sắc với sự hỗ trợ không ngừng từ Thầy
Cuối cùng, em xin chân thành cảm ơn sự kiên nhẫn và sự nhận thức rõ ràng của Thầy, đã giúp em hiểu sâu hơn về chủ đề và phát triển kỹ năng của mình Em rất tự hào và biết ơn
về sự hướng dẫn và sự hỗ trợ của Thầy
Trang 51.2 Tác động tiêu cực của việc thiếu bảo mật thông tin:
● Đối với doanh nghiệp:
- Mất uy tín thương hiệu, giảm niềm tin của khách hàng
- Gây thiệt hại về tài chính do phải chi trả cho việc khắc phục sự cố, bồi thường thiệt hại cho khách hàng, v.v
- Có thể bị các cơ quan chức năng xử phạt vi phạm quy định về bảo mật thông tin
● Đối với khách hàng:
- Bị đánh cắp thông tin cá nhân, dữ liệu tài chính
- Rủi ro bị lừa đảo, gian lận
- Mất tiền trong tài khoản
2 Tổng quan về xác thực người dùng và JSON Web Tokens (JWT):
2.1 Xác thực người dùng
Xác thực người dùng là quá trình xác minh danh tính của người dùng khi họ truy cập vào một hệ thống hoặc ứng dụng Quá trình này thường được thực hiện bằng cách yêu cầu người dùng cung cấp thông tin đăng nhập, chẳng hạn như tên người dùng và mật khẩu Sau khi người dùng cung cấp thông tin đăng nhập, hệ thống sẽ so sánh thông tin này với thông tin được lưu trữ trong cơ sở dữ liệu để xác minh danh tính của người dùng
Có nhiều phương pháp xác thực người dùng khác nhau, bao gồm:
● Xác thực dựa trên mật khẩu: Đây là phương pháp xác thực phổ biến nhất, trong đó người dùng được yêu cầu nhập tên người dùng và mật khẩu
● Xác thực dựa trên sinh trắc học: Phương pháp này sử dụng các đặc điểm sinh học của người dùng, chẳng hạn như dấu vân tay hoặc khuôn mặt, để xác minh danh tính
● Xác thực dựa trên mã thông báo: Phương pháp này sử dụng mã thông báo được tạo bởi hệ thống để xác minh danh tính của người dùng
● Xác thực hai yếu tố (2FA): Phương pháp này yêu cầu người dùng cung cấp hai yếu tố xác minh, chẳng hạn như mật khẩu và mã thông báo được gửi đến điện thoại của họ, để xác minh danh tính
2.2 JSON Web Tokens (JWT)
JSON Web Token (JWT) là một tiêu chuẩn mở (RFC 7519) định nghĩa một cách thức nhỏ gọn và tự động để truyền thông tin giữa các bên dưới dạng đối tượng JSON Thông tin này có thể được xác minh và đáng tin cậy vì nó có chứa chữ ký số
JWT bao gồm ba phần chính:
Trang 6○ Tích hợp dễ dàng với Single Sign-On (SSO): JWT có thể được sử dụng
trong các hệ thống Single Sign-On để xác thực người dùng một lần và truy cập nhiều ứng dụng khác nhau mà không cần phải đăng nhập lại
2.2 Quy trình xác thực người dùng với JWT
JWT hoạt động như thế nào ?
Trong quá trình xác thực, chúng ta sử dụng JSON Web Tokens (JWT) để trao đổi thông tin giữa người dùng và máy chủ Khi người dùng đăng nhập thành công, máy chủ sẽ trả
về một token
Mỗi khi người dùng muốn truy cập vào một router hoặc resource được bảo vệ, trình duyệt của họ sẽ gửi JWT đến máy chủ, thường được đặt trong tiêu đề Authorization với schema Bearer Nội dung của tiêu đề sẽ có dạng:
Authorization: Bearer <token>
Trong một số trường hợp, điều này tạo thành một cơ chế xác thực không cần lưu trữ trạng thái (stateless authentication mechanism) Các route được bảo vệ của máy chủ sẽ kiểm tra xem có JWT hợp lệ nào trong tiêu đề Authorization hay không, và nếu có, người dùng sẽ được phép truy cập vào các resource được bảo vệ
Lưu ý rằng khi gửi JWT qua tiêu đề HTTP, chúng ta nên hạn chế dung lượng của chúng
để tránh việc gặp vấn đề với máy chủ Một số máy chủ có thể không chấp nhận các tiêu
đề quá lớn
Hình 3 Mô hình hoạt động của JWT
1 User thực hiện login bằng cách gửi id/password hay sử dụng các tài khoản mạng
xã hội lên phía Authentication Server (Server xác thực)
Trang 7trọng của việc triển khai các biện pháp phân quyền hiệu quả trong việc ngăn chặn các vi phạm dữ liệu Theo nghiên cứu này, 68% các vi phạm dữ liệu được báo cáo có thể được ngăn chặn bằng cách triển khai các biện pháp phân quyền hiệu quả
.JWTs (JSON Web Tokens) đã giúp cải thiện quá trình phân quyền bằng cách chứa thông tin về vai trò và quyền hạn của người dùng trong token, từ đó giúp máy chủ đưa ra quyết định phân quyền mà không cần phải thực hiện truy vấn cơ sở dữ liệu
Một trong những ưu điểm lớn nhất của việc sử dụng JWTs cho phân quyền là khả năng chứa thông tin chi tiết về vai trò và quyền hạn của người dùng trong token Thông tin này bao gồm các thông tin như vai trò của người dùng (ví dụ: quản trị viên, người dùng
thường), quyền hạn cụ thể (ví dụ: quyền xem, chỉnh sửa, xóa), và phạm vi của các quyền hạn đó (ví dụ: quyền hạn đối với một phần tử cụ thể trong hệ thống) Khi máy chủ nhận được token JWT từ người dùng, nó có thể dễ dàng giải mã và trích xuất các thông tin này
để xác định vai trò và quyền hạn của người dùng mà không cần phải thực hiện truy vấn
cơ sở dữ liệu phức tạp
Đây là một phác thảo về quy trình ủy quyền JWT điển hình, từ khi người dùng xác thực đến khi máy chủ xác minh và cung cấp quyền truy cập vào tài nguyên Dưới đây là các bước cụ thể:
1 Xác thực: Máy khách gửi thông tin xác thực của người dùng đến máy chủ Máy chủ sau đó xác thực người dùng và tạo JWT chứa thông tin về người dùng
2 Phát hành mã thông báo: Máy chủ gửi JWT trở lại máy khách, nơi nó được lưu trữ
để sử dụng trong tương lai
3 Gửi mã thông báo: Khi máy khách muốn truy cập vào tài nguyên được bảo vệ trên máy chủ, nó sẽ gửi JWT trong tiêu đề Ủy quyền của yêu cầu HTTP
4 Xác minh mã thông báo: Máy chủ nhận được yêu cầu và xác minh JWT bằng cách kiểm tra chữ ký của nó bằng khóa bí mật đã được sử dụng để ký nó Nếu JWT hợp
lệ, máy chủ sẽ trích xuất thông tin có trong đó và sử dụng nó để xác định những hành động mà người dùng được phép thực hiện
5 Cho phép yêu cầu: Nếu người dùng được phép truy cập vào tài nguyên, máy chủ
sẽ trả về dữ liệu được yêu cầu Nếu không, máy chủ sẽ trả về một thông báo lỗi
1.1.4 Cross-Origin Resource Sharing (CORS)
Chia sẻ nguồn tài nguyên gốc qua các miền (CORS) là một khía cạnh quan trọng của việc phát triển ứng dụng web hiện đại, nhưng cũng mang lại nhiều thách thức về bảo mật Trong bối cảnh này, việc sử dụng JSON Web Tokens (JWTs) đã trở thành một giải pháp phổ biến để tăng cường an ninh và bảo vệ thông tin người dùng khi giao tiếp an toàn giữa các miền
JWTs có thể được sử dụng để giao tiếp an toàn giữa các miền trong ứng dụng web bằng cách bao gồm chúng trong các tiêu đề HTTP Khi một yêu cầu được gửi từ một miền này đến một miền khác, JWT có thể được gửi kèm theo để xác thực và ủy quyền người dùng Điều này giúp đảm bảo rằng chỉ những người dùng được ủy quyền mới có thể truy cập
Trang 8và được hỗ trợ trên nhiều nền tảng khác nhau Các dịch vụ lớn như Google, Facebook và Twitter đều hỗ trợ OAuth để cung cấp dịch vụ ủy quyền truy cập trên nhiều nền tảng, bao gồm web, di động và ứng dụng máy tính
SAML
SAML Tokens thường được sử dụng chủ yếu trong môi trường doanh nghiệp và hệ thống nội bộ Mặc dù SAML có thể được triển khai trên nhiều nền tảng, nhưng nó có thể ít phổ biến trên các nền tảng di động so với JWTs, OAuth và OpenID Connect Tuy nhiên, các dịch vụ lớn như Microsoft Active Directory và các giải pháp SSO (Single Sign-On) như Okta vẫn hỗ trợ SAML cho
các ứng dụng đa nền tảng
3 Hướng phát triển
Dựa vào các những giới hạn và rủi ro thì có thể thấy JWTs có thể vẫn bị tấn công và khả năng thông tin bị lấy cắp vẫn cao Vì thế nhóm có đề xuất hướng phát triển trong việc sử dụng JWT để đảm bảo an toàn thông tin trong thương mại điện tử
3.1 Defense in depth
JWT (JSON Web Tokens) có thể được tích hợp vào một chiến lược bảo mật đa tầng để tăng cường tính an toàn của hệ thống Bảo mật đa tầng, hay còn gọi là "defense in depth",
là một chiến lược bảo mật phổ biến trong ngành công nghiệp, nơi sử dụng nhiều lớp bảo
vệ để bảo vệ hệ thống khỏi các cuộc tấn công từ nhiều phía khác nhau Bằng cách kết hợp JWT vào trong một chiến lược bảo mật đa tầng, ta có thể tạo ra một hệ thống bảo mật toàn diện và mạnh mẽ
- Lớp Bảo Mật Tầng 1 - Transport Layer Security (TLS/SSL): Hệ thống sử dụng HTTPS để bảo vệ thông tin khi truyền qua mạng Tất cả các kết nối giữa máy khách và máy chủ đều được mã hóa để ngăn chặn việc đánh cắp hoặc sửa đổi dữ liệu trong quá trình truyền tải
Trang 9xuống mức tối thiểu, nó giống như một rào cản hoặc một chướng ngại vật khó vượt qua đối với các tin tặc
Xác thực người dùng có vị trí quan trọng trong hệ thống bởi các lý do sau:
- Bảo vệ dữ liệu quan trọng
- Đảm bảo độ tin cậy
- Giữ an toàn cho thông tin cá nhân
- Tuân thủ các quy định của pháp luật
- Đảm bảo trải nghiệm người dùng
1.2 Phương pháp xác thực truyền thống và hiện đại
Các phương pháp xác thực:
● Basic Authentication
Authentication là quá trình xác thực người dùng Nó giúp chúng ta biết được người
dùng là ai, và có quyền truy cập vào các tài nguyên nào
Authorization là quá trình xác định người dùng có quyền truy cập vào tài nguyên nào Nó giúp chúng ta biết được người dùng có quyền truy cập vào tài nguyên nào Hiểu
đơn giản hơn thì Authorization là phiên bản nâng cấp của Authentication Phải xác thực người dùng trước rồi mới xác thực người dùng có quyền truy cập vào tài nguyên nào
Luồng hoạt động của Authentication
- Bước 1: Client sẽ gửi một request lên server chứa thông tin định danh client là ai,
cái này có thể là username/password, một đoạn mã nào đấy, hoặc là token, hoặc là
một số thông tin khác
- Bước 2: Server sẽ kiểm tra thông tin định danh của client với thông tin trong
database Nếu thông tin định danh đúng, server sẽ trả về một dấu hiệu gì đó để cho client biết là đăng nhập thành công
- Bước 3: Client sẽ lưu lại dấu hiệu này, và gửi dấu hiệu này lên server mỗi khi
client muốn truy cập vào các tài nguyên của server
- Bước 4: Server sẽ kiểm tra dấu hiệu, nếu hợp lệ, server sẽ trả về tài nguyên cần
thiết
Trang 10Ưu điểm Nhược điểm
- Đơn Giản
- Dễ hiểu
- Dễ triển khai
- Không an toàn vì được mã hóa bằng Base64
- Thiếu tính linh hoạt vì Basic Authentication không hỗ trợ nhiều cấp độ xác thực, quản lý quyền truy cập hay gia hạn hoặc thu hồi quyền truy cập Làm giảm khả năng mở rộng và kiểm soát trong các ứng dụng phức
Về mặt bảo mật Digest Authentication đã khắc phục được một số hạn chế của Basic
Authentication
- Không gửi password dưới dạng văn
bản thuần túy qua network
- Chống được replay attack
- Bảo vệ người dùng khỏi giả mạo
- Yêu cầu máy chủ lưu trữ thông tin realm và mật khẩu người dùng
Trang 11Từ những ưu và nhược điểm trên có thể thấy Digest Authentication có thể được dùng để tăng cường an toàn trong môi trường phát triển của các dịch vụ chưa được public vì việc thực hiện các phương pháp xác thực này ít tốn kém và ít tốn thời gian
● OAuth 2.0
OAuth 2.0, viết tắt của “Open Authorization”, là một tiêu chuẩn được thiết kế để cho phép một trang web hoặc ứng dụng thay mặt người dùng truy cập các tài nguyên được lưu trữ bởi các ứng dụng web khác
OAuth 2.0 là một giao thức ủy quyền (authorization protocol) chứ không phải là một giao thức xác thực (authentication protocol)
OAuth 2.0 sử dụng access token để ủy quyền cho các ứng dụng truy cập vào các tài nguyên người dùng Thường thì access token này sẽ theo format JWT (JSON Web
Token)
Một hệ thống OAuth 2.0 bao gồm 4 bên:
- Resource Owner: là người sở hữu tài nguyên, ví dụ như là người dùng ứng dụng
- Resource Server: là nơi lưu trữ tài nguyên, ví dụ như server API của ứng dụng
- Client: là ứng dụng muốn truy cập vào tài nguyên của người dùng
- Authorization Server: là nơi cấp phát access token cho client (thường cùng một server với Resource server)
Ph ạm vi của OAuth 2.0
Phạm vi (Scopes) là concept quan trọng của OAuth 2.0 Nó cho phép người dùng có thể chọn xem ứng dụng sẽ được phép truy cập vào những tài nguyên nào Lúc mà chúng ta login thì sẽ thấy có một popup hiện lên thông báo ứng dụng sẽ truy cập vào những thông tin gì của người dùng
Cơ chế hoạt động của OAuth 2.0
- Bước 1: Người dùng truy cập ứng dụng: Người dùng truy cập ứng dụng web hoặc
di động muốn sử dụng tài nguyên của họ
- Bước 2: Ứng dụng chuyển hướng người dùng đến máy chủ ủy quyền: Ứng dụng
sẽ chuyển hướng người dùng đến máy chủ ủy quyền của nhà cung cấp dịch vụ (ví
dụ: Facebook, Google)
- Bước 3: Người dùng ủy quyền truy cập: Người dùng đăng nhập vào tài khoản của
họ trên máy chủ ủy quyền và ủy quyền cho ứng dụng truy cập tài nguyên cụ thể của họ
- Bước 4: Máy chủ ủy quyền cấp mã ủy quyền: Sau khi ủy quyền, máy chủ ủy
quyền sẽ cấp cho ứng dụng một mã ủy quyền tạm thời
Trang 12- Bước 5: Ứng dụng đổi mã ủy quyền lấy mã truy cập: Ứng dụng sẽ đổi mã ủy
quyền lấy mã truy cập vĩnh viễn từ máy chủ ủy quyền
- Bước 6: Ứng dụng sử dụng mã truy cập để truy cập tài nguyên: Ứng dụng sử dụng
mã truy cập để truy cập tài nguyên của người dùng từ máy chủ tài nguyên (ví dụ như API của Facebook, Google)
- Cung cấp xác thực nhanh hơn và dễ
dàng hơn so với phiên bản cũ
- OAuth 2.0 được coi là một giao
thức vô cùng linh hoạt, hoạt động
- Đảm bảo tối ưu các giao thức bảo
mật tùy biến và làm cơ sở an toàn
cho dữ liệu
- Hạn chế truy cập vào dữ liệu của
người sử dụng và cho phép truy cập
khi token hết hạn
- Sử dụng hạn chế trên trình duyệt Chrome vì có lỗ hổng bảo mật tạo điều kiện cho hacker tấn công
- Khi tài khoản bị hack, ảnh hưởng đến nhiều trang web cùng lúc
- Trong trường hợp có phần mở rộng
mô tả hệ thống, sẽ phát sinh các triển khai không tương tác
2 JSON Web Tokens (JWT)
2.1 Khái niệm, cấu trúc và tính năng
● Khái niệm:
JSON Web Tokens (JWT) là một tiêu chuẩn mở được sử dụng để tạo và truyền thông tin xác thực an toàn giữa các bên dưới dạng một đoạn mã thông tin có thể xem được và dễ dàng xác thực JWT được thiết kế để được sử dụng trong việc xác thực và ủy quyền trong các ứng dụng web và dịch vụ web
● Cấu trúc:
Trang 14○ Registered claims: Là các claim đã được định nghĩa sẵn trong JWT, đây là nhưng claim không bắt buộc nhưng thường được gợi ý, cung cấp cho ta những tập hợp claim hữu dụng và có thể tương tác được Ví dụ: iss (issuer), sub (subject), exp (expiration time), iat (issued at time), và aud (audience).
○ Public claims: Là các claim mà các bên có thể định nghĩa một cách tự do, nhưng để tránh xung đột với các claim đã được định nghĩa sẵn, những claim này nên được định nghĩa tại IANA JSON Web Token Registryhoặc theo một URI sử dụng một namespace tránh xung đột
○ Private claims: Là các claim được sử dụng để truyền thông tin giữa các bên mà không cần phải định nghĩa trước hoặc được công nhận bởi tất cả bên
là chính người đó như nó nói
Ví dụ về signature sử dụng HMAC SHA256:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
● Tính năng
Dưới đây là những tính năng phổ biến nhất của JSON Web Tokens (JWT):
○ Bảo mật thông tin: JWT có khả năng ký điện tử, đảm bảo tính toàn vẹn
của dữ liệu Điều này ngăn chặn bất kỳ sửa đổi nào trong dữ liệu trên
đường truyền
○ Di động và độc lập với ngôn ngữ: JWT có thể được sử dụng trong nhiều
loại ứng dụng và dịch vụ khác nhau mà không phụ thuộc vào ngôn ngữ lập trình cụ thể
○ Tiêu chuẩn và phổ biến: JWT là một tiêu chuẩn mở và được sử dụng rộng
rãi trong cộng đồng phát triển phần mềm Điều này đảm bảo tính nhất quán
và tương thích giữa các hệ thống
○ Không cần lưu trạng thái: JWT không yêu cầu lưu trạng thái server-side,
điều này giúp giảm độ phức tạp của hệ thống và tăng tính mở rộng
○ Phù hợp với RESTful APIs: JWT thích hợp cho việc xác thực và ủy
quyền trong các dịch vụ API RESTful, nơi không có trạng thái cần được duy trì giữa các yêu cầu
Trang 15○ Tích hợp dễ dàng với Single Sign-On (SSO): JWT có thể được sử dụng
trong các hệ thống Single Sign-On để xác thực người dùng một lần và truy cập nhiều ứng dụng khác nhau mà không cần phải đăng nhập lại
2.2 Quy trình xác thực người dùng với JWT
JWT hoạt động như thế nào ?
Trong quá trình xác thực, chúng ta sử dụng JSON Web Tokens (JWT) để trao đổi thông tin giữa người dùng và máy chủ Khi người dùng đăng nhập thành công, máy chủ sẽ trả
về một token
Mỗi khi người dùng muốn truy cập vào một router hoặc resource được bảo vệ, trình duyệt của họ sẽ gửi JWT đến máy chủ, thường được đặt trong tiêu đề Authorization với schema Bearer Nội dung của tiêu đề sẽ có dạng:
Authorization: Bearer <token>
Trong một số trường hợp, điều này tạo thành một cơ chế xác thực không cần lưu trữ trạng thái (stateless authentication mechanism) Các route được bảo vệ của máy chủ sẽ kiểm tra xem có JWT hợp lệ nào trong tiêu đề Authorization hay không, và nếu có, người dùng sẽ được phép truy cập vào các resource được bảo vệ
Lưu ý rằng khi gửi JWT qua tiêu đề HTTP, chúng ta nên hạn chế dung lượng của chúng
để tránh việc gặp vấn đề với máy chủ Một số máy chủ có thể không chấp nhận các tiêu
đề quá lớn
Hình 3 Mô hình hoạt động của JWT
1 User thực hiện login bằng cách gửi id/password hay sử dụng các tài khoản mạng
xã hội lên phía Authentication Server (Server xác thực)
Trang 162 Authentication Server tiếp nhận các dữ liệu mà User gửi lên để phục vụ cho việc xác thực người dùng Trong trường hợp thành công, Authentication Server sẽ tạo một JWT và trả về cho người dùng thông qua response
3 Người dùng nhận được JWT do Authentication Server vừa mới trả về làm "chìa khóa" để thực hiện các "lệnh" tiếp theo đối với Application Server
4 Application Server trước khi thực hiện yêu cầu được gọi từ phía User, sẽ verify JWT gửi lên Nếu OK, tiếp tục thực hiện yêu cầu được gọi
III Triển khai mã nguồn minh họa cho JWT
Ở phần này, nhóm sẽ tích hợp module xác thực đơn giản sử dụng JWT
● Các công nghệ, thư viện chính sử dụng trong mã nguồn:
- NextJS: Một framework được phát triển từ Reactjs giúp xây dựng website theo hướng server-side rendering
- Thư viện jsonwebtoken: Thư viện JSON Web Token (jsonwebtoken) là một công
cụ phổ biến được sử dụng trong việc tạo và xác minh JWT trong ứng dụng
Node.js
● Quy trình xây dựng module xác thực:
- Tạo giao diện form đăng nhập để người dùng nhập thông tin đăng nhập
- Xử lý yêu cầu đăng nhập phía Server: kiểm tra thông tin đăng nhập và phản hồi đến người dùng, nếu thông tin đăng nhập hợp lệ, trả về một đoạn mã JWT
- Xử lý lưu token vào Cookie và dùng token này để truy cập những route cần xác thực
Trang 17Bước 1: Tạo giao diện form đăng nhập và xử lý submit, validation form, đồng thời xử lí
lưu JWT từ Server trả về vào Cookie nếu thông tin đăng nhập hợp lệ