Mã thông báo web JSON

Mã thông báo web JSON (JWT) là một tiêu chuẩn web mở được dùng để xác thực và cho phép trao đổi thông tin giữa ứng dụng và máy chủ. Khi một ứng dụng người dùng trước tiên đăng nhập bằng thông tin xác thực vai trò thích hợp, thì máy chủ sẽ tạo và trả về JWT được mã hoá, có chữ ký số để sử dụng với các yêu cầu tiếp theo. Quá trình này vừa xác thực người dùng vừa cho phép người dùng truy cập vào các tuyến, dịch vụ và tài nguyên dựa trên vai trò trong tài khoản của họ.

Đối với các lệnh gọi phương thức API từ môi trường tin cậy thấp, Fleet Engine yêu cầu việc sử dụng Mã thông báo web JSON (JWT) được ký bằng một tài khoản dịch vụ thích hợp. Môi trường đáng tin cậy thấp bao gồm điện thoại thông minh và trình duyệt. JWT bắt nguồn từ máy chủ của bạn – một môi trường hoàn toàn đáng tin cậy. JWT được ký, mã hoá và chuyển đến máy khách để máy chủ cho đến khi hết hạn hoặc không còn hợp lệ. Đối với danh sách vai trò trong tài khoản dịch vụ, hãy xem các vai trò trong tài khoản dịch vụ Fleet Engine trong Fleet Engine cơ bản.

Ngược lại, phần phụ trợ của bạn phải xác thực và uỷ quyền dựa trên Fleet Engine bằng Thông tin đăng nhập mặc định của ứng dụng tiêu chuẩn cơ chế cụ thể.

Không giống như khoá API, JWT có thời hạn ngắn và chỉ giới hạn các thao tác mà vai trò được phép thực hiện. Để biết thêm thông tin về JWT, hãy xem phần Web JSON Mã thông báo trên Wikipedia. Để biết thông tin chi tiết về các vai trò truy cập, hãy xem phần Dịch vụ tài khoản trong hướng dẫn này.

Phần tử JWT

JWT chứa tiêu đề và phần xác nhận quyền sở hữu. Phần tiêu đề chứa thông tin như khoá riêng tư thu được từ tài khoản dịch vụ và thuật toán mã hoá. Phần xác nhận quyền sở hữu chứa các thông tin như mã JWT tạo ra thời gian, thời gian sống, các dịch vụ mà JWT tuyên bố quyền truy cập và các thông tin uỷ quyền khác để xác định phạm vi truy cập; với ví dụ: mã xe giao hàng.

Bảng sau đây cung cấp thông tin mô tả chi tiết về các trường JWT nói chung, cũng như thông tin cụ thể về nơi bạn có thể tìm thấy giá trị cho trong dự án Fleet Engine Cloud.

Trường tiêu đề JWT

Trường

Nội dung mô tả

alg

Thuật toán cần sử dụng. "RS256".

tiêu chuẩn

Loại mã thông báo. "JWT".

trẻ em

Mã khoá riêng tư của tài khoản dịch vụ của bạn. Bạn có thể tìm thấy giá trị này trong Trường private_key_id của tệp JSON trong tài khoản dịch vụ. Nhãn hiệu hãy nhớ sử dụng khoá trong một tài khoản dịch vụ có cấp độ quyền phù hợp.

Trường xác nhận quyền của JWT

Trường

Nội dung mô tả

Địa chỉ email của tài khoản dịch vụ của bạn, trong Trường client_email của tệp JSON trong tài khoản dịch vụ.

sub

Địa chỉ email của tài khoản dịch vụ của bạn, trong Trường client_email của tệp JSON trong tài khoản dịch vụ.

aud

SERVICE_NAME của tài khoản dịch vụ, trong trường hợp này là https://fleetengine.googleapis.com/

iat

Dấu thời gian khi JWT được tạo, được chỉ định bằng giây đã trôi qua kể từ 00:00:00 UTC, January 1, 1970. Chờ 10 phút để xiên. Nếu dấu thời gian là quá xa trong quá khứ hoặc trong tương lai, máy chủ có thể báo cáo lỗi.

exp

Dấu thời gian khi JWT hết hạn, được chỉ định bằng giây đã trôi qua kể từ 00:00:00 UTC, January 1, 1970. Yêu cầu không thành công nếu ít nhất một giờ trong tương lai.

uỷ quyền

Tuỳ thuộc vào trường hợp sử dụng, tệp có thể chứa deliveryvehicleid, trackingid, taskid hoặc taskids.

Nếu chỉ định tác vụ, phạm vi cấp phép phải là một mảng trong một các dạng sau:

"taskids": ["task_id_one","task_id_two"]

hoặc

"taskids": ["*"]

Thông báo xác nhận quyền sở hữu JWT của Fleet Engine

Fleet Engine sử dụng các xác nhận quyền sở hữu riêng tư. Việc sử dụng các tuyên bố riêng tư đảm bảo rằng chỉ những ứng dụng được uỷ quyền mới có thể truy cập vào dữ liệu của riêng ứng dụng đó.

Ví dụ: khi máy chủ của bạn cấp Mã thông báo web JSON cho thiết bị di động của người lái xe thiết bị nào thì tệp đó phải chứa xác nhận quyền sở hữu vehicleid hoặc deliveryvehicleid xác nhận quyền sở hữu với giá trị mã xe của người lái xe đó. Sau đó: tuỳ thuộc vào vai trò của người lái xe, JWT chỉ cấp quyền truy cập cho xe cụ thể Mã nhận dạng chứ không phải bất kỳ mã xe tuỳ ý nào khác.

Fleet Engine sử dụng các tuyên bố riêng tư sau đây:

Chuyến đi theo yêu cầu

  • vehicleid:
    • SDK tài xế luôn sử dụng thông báo xác nhận quyền sở hữu này cho dù bạn đang di chuyển bằng cách nào hoặc chiếc xe. Phần phụ trợ của Fleet Engine giúp đảm bảo rằng chiếc xe liên kết với chuyến đi đã yêu cầu trước khi sửa đổi.
    • JWT có thể áp dụng cho cả phương tiện di chuyển và chuyến đi các thao tác khác, ngay cả khi không bắt buộc, giúp đơn giản hoá quá trình ký JWT trong quá trình triển khai.
  • tripid:
    • SDK người tiêu dùng luôn sử dụng thông báo xác nhận quyền sở hữu này.
    • JWT có thể bao gồm cả hoạt động của xe cộ và chuyến đi, ngay cả khi không bắt buộc, việc này có thể giúp đơn giản hoá quá trình ký mã thông báo trong quá trình triển khai.

Việc cần làm đã lên lịch

  • deliveryvehicleid

    Dùng khi gọi mỗi xe giao hàng API.

  • taskid

    Sử dụng khi gọi API theo tác vụ.

  • taskids

    Sử dụng khi gọi điện BatchCreateTasksAPI. Khiếu nại này phải ở dạng mảng, và mảng phải chứa tất cả mã công việc cần thiết để hoàn tất yêu cầu. Không đưa vào các tuyên bố delivervehicleid, trackingid hoặc taskid.

  • trackingid

    Sử dụng khi gọi hàm GetTaskTrackingInfoAPI. Thông báo xác nhận quyền sở hữu phải khớp với mã theo dõi trong yêu cầu. Đừng thêm delivervehicleid, taskid hoặc taskids thông báo xác nhận quyền sở hữu.

Các bước tiếp theo