bảo mật thông tin trong thương mại điện tử đề tài xác thực người dùng authentication với phương pháp json web tokens jwt

34 0 0
Tài liệu đã được kiểm tra trùng lặp
bảo mật thông tin trong thương mại điện tử đề tài xác thực người dùng authentication với phương pháp json web tokens jwt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

○ 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

BÁO CÁO MÔN HỌC

BẢO MẬT THÔNG TIN TRONG THƯƠNG MẠI ĐIỆN TỬ Đề tài:

Xác thực người dùng (authentication) với phương pháp JSON Web Tokens (JWT)

Nhóm thực hiện: Nhóm 7 GVHD: TS Hoàng Anh

Trang 2

STTHọ và tên Phân công công việc % đóng góp vào dự án

Khang Bảo

- LỜI CẢM ƠN - LỜI MỞ ĐẦU - I Giới thiệu:

- 1 Bối cảnh và tầm quan trọng của bảo mật thông tin trong thương mại điện tử:

- 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

100%

4 Đinh Minh Dương

- III Triển khai mã nguồn minh họa cho JWT

- Chạy demo mã nguồn minh họa 100%

5 Trần Minh Nghĩa

- 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

- 3 Hướng phát triển - Thiết kế bài trình chiếu

100%

Bảng mức độ đóng góp của các thành viên và công việc cụ thể

Trang 3

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 21

Trang 4

LỜ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 5

1.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 7

trọ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 8

và đượ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

OpenID Connect

OpenID Connect Tokens được thiết kế để làm việc trên nhiều nền tảng khác nhau OpenID Connect là một tiêu chuẩn xác thực phổ biến được sử dụng trong các ứng dụng đa nền tảng và các dịch vụ đám mây Các thư viện và framework cho OpenID Connect cũng được phát triển và hỗ trợ trên nhiều nền tảng

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 9

xuố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 tạp

- Không thể logout khỏi trình duyệt, chỉ khi tắt trình duyệt mới logout ra được

- Không thể sử dụng cho các ứng dụng mobile vì trên ứng dụng mobile không có giao diện để người dùng nhập username/password

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 tin nhắn

- Hỗ trợ tính toàn vẹn dữ liệu vì sử dụng hàm băm MD5

- Vẫn có thể bị xâm nhập bởi tấn công Man-in-the-Middle

- Có nhiều Security Options không bắt buộc nếu không được set nên tính bảo mật vẫn chưa cao

- Yêu cầu máy chủ lưu trữ thông tin realm và mật khẩu người dùng

Trang 11

Từ 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 dựa trên SSL

- Đảm bảo quyền riêng tư giữa máy chủ web và trình duyệt

- Lưu token cho việc truy cập của người dùng một cách nhanh chóng và dễ dà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 13

Là thành phần thứ hai của JWT, Payload chứa các tuyên bố (claims) về người dùng hoặc các thông tin khác Payload được chia thành ba loại claim: registered, public và private.

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.

Ví dụ về signature sử dụng HMAC SHA256:

HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

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 16

2 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 17

Bướ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ệ.

Ngày đăng: 19/06/2024, 10:21