Làm cách nào để nhận mã thông báo JWT từ API?

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách sử dụng JWT trong Node. js để bảo mật các điểm cuối và thậm chí xác thực người dùng

Viết mã và phát triển ứng dụng khá đơn giản. Tuy nhiên, làm thế nào để chúng tôi xử lý xác thực và rất có thể là ủy quyền?

xác thực và ủy quyền là gì

Xác thực và ủy quyền được sử dụng trong bảo mật, đặc biệt khi có quyền truy cập vào hệ thống. Tuy nhiên, có một sự khác biệt đáng kể giữa việc được vào một ngôi nhà [xác thực] và những gì bạn có thể làm khi ở bên trong [ủy quyền]

xác thực

Xác thực là quá trình xác minh danh tính của người dùng thông qua việc thu thập thông tin đăng nhập và sử dụng các thông tin đăng nhập đó để xác nhận danh tính của người dùng. Quá trình ủy quyền bắt đầu nếu thông tin đăng nhập là hợp pháp. Quy trình ủy quyền luôn tuân theo quy trình xác thực

Bạn đã biết về quy trình xác thực vì tất cả chúng ta đều làm việc đó hàng ngày, cho dù ở nơi làm việc [đăng nhập vào máy tính của bạn] hay ở nhà [đăng nhập vào một trang web]. Tuy nhiên, sự thật là hầu hết “những thứ” được kết nối với Internet đều yêu cầu bạn chứng minh danh tính của mình bằng cách cung cấp thông tin đăng nhập

ủy quyền

Ủy quyền là quá trình cho phép người dùng được xác thực truy cập vào tài nguyên bằng cách xác định xem họ có quyền truy cập hệ thống hay không. Bằng cách cấp hoặc từ chối giấy phép cụ thể cho người dùng được xác thực, ủy quyền cho phép bạn kiểm soát các đặc quyền truy cập

Vì vậy, ủy quyền xảy ra sau khi hệ thống xác thực danh tính của bạn, cấp cho bạn quyền truy cập đầy đủ vào các tài nguyên như thông tin, tệp, cơ sở dữ liệu, quỹ, địa điểm và bất kỳ thứ gì khác. Điều đó nói rằng, ủy quyền ảnh hưởng đến khả năng truy cập hệ thống của bạn và mức độ bạn có thể làm như vậy

JWT là gì

JSON Web Tokens [JWT] là một tiêu chuẩn công nghiệp mở RFC 7519 để thể hiện các khiếu nại giữa hai bên. Ví dụ: bạn có thể sử dụng jwt. io để giải mã, xác minh và tạo JWT

JWT chỉ định một phương thức nhỏ gọn và khép kín để truyền thông tin dưới dạng đối tượng JSON giữa hai bên. Bởi vì nó được ký, thông tin này có thể được kiểm tra và tin cậy. JWT có thể được ký bằng bí mật [sử dụng thuật toán HMAC] hoặc tổ hợp khóa công khai/riêng tư RSA hoặc ECDSA. Trong giây lát, chúng ta sẽ thấy một số ví dụ về cách sử dụng chúng

điều kiện tiên quyết

Để làm theo hướng dẫn này, bạn sẽ cần

  • Kiến thức làm việc về JavaScript
  • Hiểu biết tốt về Node. js
  • Hiểu biết cơ bản về MongoDB hoặc bất kỳ cơ sở dữ liệu nào bạn chọn
  • Postman và một số kiến ​​thức về cách sử dụng Postman

Phát triển API sử dụng mã thông báo JWT để xác thực trong Node. js

Để bắt đầu, chúng tôi sẽ cần thiết lập dự án của bạn

Mở Visual Studio Code bằng cách điều hướng đến thư mục bạn chọn trên máy của bạn và mở nó trên thiết bị đầu cuối

Sau đó thực hiện

code.

Ghi chú.

mkdir jwt-project

cd jwt-project

npm init -y
7 sẽ không hoạt động nếu bạn chưa cài đặt Visual Studio Code trên hệ thống của mình

Bước 1 - Tạo một thư mục và khởi tạo
mkdir jwt-project

cd jwt-project

npm init -y
8

Tạo một thư mục và khởi tạo

mkdir jwt-project

cd jwt-project

npm init -y
8 bằng cách gõ lệnh sau

  • Windows quyền lực

mkdir jwt-project

cd jwt-project

npm init -y

  • Linux

mkdir jwt-project

cd jwt-project

npm init -y

Bước 2 - Tạo tệp và thư mục

Ở bước 1, chúng tôi đã khởi tạo npm bằng lệnh

mkdir jwt-project

cd jwt-project

npm init -y
0, tự động tạo gói. json

Chúng ta cần tạo thư mục

mkdir jwt-project

cd jwt-project

npm init -y
1,
mkdir jwt-project

cd jwt-project

npm init -y
2,
mkdir jwt-project

cd jwt-project

npm init -y
3 và các tệp của chúng, ví dụ
mkdir jwt-project

cd jwt-project

npm init -y
4,
mkdir jwt-project

cd jwt-project

npm init -y
5,_______16 bằng các lệnh bên dưới

mkdir jwt-project

cd jwt-project

npm init -y
3

Bây giờ chúng ta có thể tạo các tệp

mkdir jwt-project

cd jwt-project

npm init -y
7 và
mkdir jwt-project

cd jwt-project

npm init -y
8 trong thư mục gốc của dự án bằng lệnh

mkdir jwt-project

cd jwt-project

npm init -y
6

Như thể hiện trong hình dưới đây

Bước 3 - Cài đặt phụ thuộc

Chúng tôi sẽ cài đặt một số phụ thuộc như

mkdir jwt-project

cd jwt-project

npm init -y
9,
mkdir jwt-project

cd jwt-project

npm init -y
30,
mkdir jwt-project

cd jwt-project

npm init -y
31
mkdir jwt-project

cd jwt-project

npm init -y
32
mkdir jwt-project

cd jwt-project

npm init -y
33 và phụ thuộc phát triển như
mkdir jwt-project

cd jwt-project

npm init -y
34 để khởi động lại máy chủ khi chúng tôi tự động thực hiện các thay đổi

Chúng tôi sẽ cài đặt cầy mangut vì tôi sẽ sử dụng MongoDB trong hướng dẫn này

Chúng tôi sẽ xác thực thông tin đăng nhập của người dùng dựa trên những gì chúng tôi có trong cơ sở dữ liệu của mình. Vì vậy, toàn bộ quá trình xác thực không giới hạn ở cơ sở dữ liệu mà chúng tôi sẽ sử dụng trong bài viết này

mkdir jwt-project

cd jwt-project

npm init -y
3

Bước 4 - Tạo một nút. js và kết nối cơ sở dữ liệu của bạn

Bây giờ, hãy tạo Nút của chúng tôi. js và kết nối cơ sở dữ liệu của chúng tôi bằng cách thêm các đoạn mã sau vào

mkdir jwt-project

cd jwt-project

npm init -y
8,
mkdir jwt-project

cd jwt-project

npm init -y
7
mkdir jwt-project

cd jwt-project

npm init -y
37
mkdir jwt-project

cd jwt-project

npm init -y
38 của bạn theo thứ tự đó

Trong

mkdir jwt-project

cd jwt-project

npm init -y
39 của chúng tôi

mkdir jwt-project

cd jwt-project

npm init -y
60

mkdir jwt-project

cd jwt-project

npm init -y
0

Trong

mkdir jwt-project

cd jwt-project

npm init -y
8 của chúng tôi

mkdir jwt-project

cd jwt-project

npm init -y
62

mkdir jwt-project

cd jwt-project

npm init -y
3

Trong

mkdir jwt-project

cd jwt-project

npm init -y
7 của chúng tôi

mkdir jwt-project

cd jwt-project

npm init -y
64

mkdir jwt-project

cd jwt-project

npm init -y
6

Nếu bạn để ý thì file của chúng ta cần một số biến môi trường. Bạn có thể tạo một tệp

mkdir jwt-project

cd jwt-project

npm init -y
38 mới nếu chưa có và thêm các biến của mình trước khi bắt đầu ứng dụng của chúng tôi

Trong

mkdir jwt-project

cd jwt-project

npm init -y
66 của chúng tôi

mkdir jwt-project

cd jwt-project

npm init -y
9

Để khởi động máy chủ của chúng tôi, hãy chỉnh sửa đối tượng tập lệnh trong

mkdir jwt-project

cd jwt-project

npm init -y
67 của chúng tôi để trông giống như bên dưới

mkdir jwt-project

cd jwt-project

npm init -y
0

Đoạn mã trên đã được chèn thành công vào

mkdir jwt-project

cd jwt-project

npm init -y
8,
mkdir jwt-project

cd jwt-project

npm init -y
7 và
mkdir jwt-project

cd jwt-project

npm init -y
6. Đầu tiên, chúng tôi xây dựng nút của chúng tôi. js trong
mkdir jwt-project

cd jwt-project

npm init -y
7 và nhập ứng dụng. js với các tuyến được định cấu hình

Sau đó, như được chỉ ra trong

mkdir jwt-project

cd jwt-project

npm init -y
6, chúng tôi đã sử dụng
mkdir jwt-project

cd jwt-project

npm init -y
9 để tạo kết nối với cơ sở dữ liệu của chúng tôi

Thực hiện lệnh

mkdir jwt-project

cd jwt-project

npm init -y
34

Cả máy chủ và cơ sở dữ liệu phải được thiết lập và chạy mà không gặp sự cố

Bước 5 - Tạo mô hình người dùng và định tuyến

Chúng tôi sẽ xác định lược đồ của chúng tôi cho các chi tiết người dùng khi đăng ký lần đầu tiên và xác thực chúng dựa trên thông tin đăng nhập đã lưu khi đăng nhập

Thêm đoạn mã sau vào

mkdir jwt-project

cd jwt-project

npm init -y
4 bên trong thư mục
mkdir jwt-project

cd jwt-project

npm init -y
1

mkdir jwt-project

cd jwt-project

npm init -y
37

mkdir jwt-project

cd jwt-project

npm init -y
1

Bây giờ, hãy tạo route cho

mkdir jwt-project

cd jwt-project

npm init -y
38 và
mkdir jwt-project

cd jwt-project

npm init -y
39, tương ứng

Trong

mkdir jwt-project

cd jwt-project

npm init -y
8 trong thư mục gốc, thêm đoạn mã sau để đăng ký và đăng nhập

mkdir jwt-project

cd jwt-project

npm init -y
8

mkdir jwt-project

cd jwt-project

npm init -y
2

Bước 6 - Triển khai chức năng đăng ký và đăng nhập

Chúng tôi sẽ triển khai hai tuyến đường này trong ứng dụng của mình. Chúng tôi sẽ sử dụng JWT để ký thông tin đăng nhập và

mkdir jwt-project

cd jwt-project

npm init -y
02 để mã hóa mật khẩu trước khi lưu trữ chúng trong cơ sở dữ liệu của chúng tôi

Từ tuyến đường

mkdir jwt-project

cd jwt-project

npm init -y
03, chúng tôi sẽ

  • Nhận đầu vào của người dùng
  • Xác thực đầu vào của người dùng
  • Xác thực nếu người dùng đã tồn tại
  • Mã hóa mật khẩu người dùng
  • Tạo người dùng trong cơ sở dữ liệu của chúng tôi
  • Và cuối cùng, tạo mã thông báo JWT đã ký

Sửa đổi cấu trúc tuyến đường

mkdir jwt-project

cd jwt-project

npm init -y
03 mà chúng tôi đã tạo trước đó để trông giống như hình bên dưới

mkdir jwt-project

cd jwt-project

npm init -y
8

mkdir jwt-project

cd jwt-project

npm init -y
3

Ghi chú. Cập nhật tệp

mkdir jwt-project

cd jwt-project

npm init -y
38 của bạn bằng một
mkdir jwt-project

cd jwt-project

npm init -y
07, có thể là một chuỗi ngẫu nhiên

Sử dụng Postman để kiểm tra endpoint, chúng ta sẽ nhận được phản hồi như bên dưới sau khi đăng ký thành công

Đối với tuyến đường

mkdir jwt-project

cd jwt-project

npm init -y
08, chúng tôi sẽ

  • Nhận đầu vào của người dùng
  • Xác thực đầu vào của người dùng
  • Xác thực nếu người dùng tồn tại
  • Xác minh mật khẩu người dùng với mật khẩu chúng tôi đã lưu trước đó trong cơ sở dữ liệu của mình
  • Và cuối cùng, tạo mã thông báo JWT đã ký

Sửa đổi cấu trúc tuyến đường

mkdir jwt-project

cd jwt-project

npm init -y
08 mà chúng tôi đã tạo trước đó để trông giống như được hiển thị bên dưới

mkdir jwt-project

cd jwt-project

npm init -y
4

Sử dụng Postman để kiểm tra, chúng ta sẽ nhận được phản hồi như bên dưới sau khi đăng nhập thành công

Bước 7 - Tạo phần mềm trung gian để xác thực

Chúng tôi có thể tạo và đăng nhập thành công người dùng. Tuy nhiên, chúng tôi sẽ tạo một tuyến đường yêu cầu mã thông báo người dùng trong tiêu đề, đó là mã thông báo JWT mà chúng tôi đã tạo trước đó

Thêm đoạn mã sau vào bên trong

mkdir jwt-project

cd jwt-project

npm init -y
5

mkdir jwt-project

cd jwt-project

npm init -y
31

mkdir jwt-project

cd jwt-project

npm init -y
5

Bây giờ, hãy tạo tuyến đường

mkdir jwt-project

cd jwt-project

npm init -y
32 và cập nhật
mkdir jwt-project

cd jwt-project

npm init -y
8 bằng đoạn mã sau để kiểm tra phần mềm trung gian

mkdir jwt-project

cd jwt-project

npm init -y
8

mkdir jwt-project

cd jwt-project

npm init -y
6

Xem kết quả bên dưới khi chúng tôi cố gắng truy cập tuyến đường

mkdir jwt-project

cd jwt-project

npm init -y
32 mà chúng tôi vừa tạo mà không chuyển mã thông báo trong tiêu đề bằng khóa
mkdir jwt-project

cd jwt-project

npm init -y
36

Bây giờ chúng ta có thể thêm một

mkdir jwt-project

cd jwt-project

npm init -y
37 trong tiêu đề bằng khóa
mkdir jwt-project

cd jwt-project

npm init -y
36 và kiểm tra lại

Xem hình ảnh dưới đây để biết câu trả lời

Bạn có thể nhấp vào đây để kiểm tra mã hoàn chỉnh trên GitHub

Phần kết luận

Trong hướng dẫn này, chúng ta đã tìm hiểu về JWT, xác thực, ủy quyền và cách phát triển API bằng cách sử dụng mã thông báo JWT để xác thực trong Node. js

Làm cách nào tôi có thể nhận mã thông báo từ API?

Bạn sử dụng thao tác POST trên phần tử api/get_token để yêu cầu mã thông báo duy nhất cần thiết để xác thực các yêu cầu API REST . , và nhấp vào Hồ sơ. Sau đó, nhấp vào Hiển thị mã thông báo.

Làm cách nào để sử dụng JWT trong API?

Để xác thực người dùng, ứng dụng khách phải gửi Mã thông báo web JSON [JWT] trong tiêu đề ủy quyền của yêu cầu HTTP tới API phụ trợ của bạn. API Gateway validates the token on behalf of your API, so you don't have to add any code in your API to process the authentication.

API xác minh mã thông báo JWT như thế nào?

Xem danh sách thư viện nền tảng OpenID để làm việc với mã thông báo JWT. .
Bước 1. Xác nhận cấu trúc của JWT. Mã thông báo web JSON [JWT] bao gồm ba phần. .
Bước 2. Xác thực chữ ký JWT. Chữ ký JWT là sự kết hợp được băm của tiêu đề và tải trọng. .
Bước 3. Xác minh các khiếu nại. Để xác minh yêu cầu JWT

Chủ Đề