Tiếng Việt

Công cụ dành cho nhà phát triển · Bộ giải mã JWT

Mã thông báo ID so với Mã thông báo truy cập: Tại sao Kết nối OpenID JWT không phải là khóa API

· Lý lịch

jwt xác thực xác thực

ID và mã thông báo truy cập được định tuyến tới những người tiêu dùng khác nhau
Hình minh họa vector ToolAcre gốc

Cả hai đều có thể là JWT từ cùng một nhà cung cấp, nhưng họ trả lời các câu hỏi khác nhau. Bài đăng này giải thích mỗi mã thông báo ID và mã thông báo truy cập chứa những gì, ai nên sử dụng chúng và cách phân biệt chúng bằng cách giải mã.

API từ chối mã thông báo có vẻ hoàn toàn hợp lệ — bởi vì nó không bao giờ dành cho API

API có thể từ chối mã thông báo được định dạng đúng, được ký chính xác vì thông tin xác thực đó được cấp cho người tiêu dùng và mục đích khác. “Đó là JWT” mô tả một định dạng có thể có, không được phép gửi nó đi khắp nơi. Mã thông báo ID và mã thông báo truy cập trả lời các câu hỏi khác nhau trong luồng nhận dạng.

ToolAcre có thể hiển thị các mẫu tiêu đề và tải trọng hỗ trợ gỡ lỗi nhưng không thể xác thực mã thông báo hoặc xác thực cấu hình OpenID Connect. Việc phân loại cuối cùng phải đến từ hợp đồng nhà cung cấp, quy trình phát hành và kết quả xác minh đáng tin cậy hơn là kiểm tra trực quan.

Khiếu nại về mã thông báo ID có thể đề xuất việc sử dụng danh tính; bộ giải mã chung này không xác thực cấu hình OpenID Connect

Mã thông báo ID truyền đạt thông tin xác thực đến khách hàng đã yêu cầu đăng nhập. Tùy thuộc vào hồ sơ, các xác nhận quyền sở hữu hiển thị có thể bao gồm nonce, thời gian xác thực, phương thức xác thực hoặc hàm băm liên quan đến mã thông báo khác. Các trường đó không phải là các khoản trợ cấp ủy quyền API chung.

Bộ giải mã xử lý `auth_time` dưới dạng trường có hình dạng thời gian và hiển thị các tên khác dành riêng cho ứng dụng trừ khi chúng nằm trong số bảy tên cốt lõi của nó. Nó không xác thực nonce, `at_hash`, `amr` hoặc ngữ nghĩa đối tượng khách hàng. Tải trọng nhận dạng có thể đọc được vẫn không đáng tin cậy cho đến khi khách hàng xác thực nó một cách chính xác.

Mã thông báo truy cập có thể là JWT hoặc mờ; chỉ JWT ba phần phù hợp với bộ giải mã này

Mã thông báo truy cập cho phép các cuộc gọi đến máy chủ tài nguyên theo hệ thống ủy quyền. Nó có thể là JWT hoặc một chuỗi mờ. Chỉ hình có ba phần được ký tên mới phù hợp với tuyến đường của ToolAcre; mã thông báo mờ không có cấu trúc chung phía máy khách để giải mã và không nên bị ép buộc thông qua công cụ này.

Mã thông báo truy cập JWT có thể mang thông tin về đối tượng và phạm vi nhưng những giá trị đó cần được xác thực và chính sách tài nguyên. Bảng điều khiển trình duyệt không triển khai máy chủ tài nguyên và không thể biết liệu phạm vi có cho phép một hoạt động cụ thể hay không.

Mã thông báo làm mới — thường mờ, không bao giờ được giải mã và không bao giờ được gửi tới API

Mã thông báo làm mới hỗ trợ lấy thông tin xác thực truy cập thay thế theo quy tắc của nhà cung cấp. Nó thường mờ đục và không dành cho API tài nguyên. Đây cũng là thông tin xác thực có giá trị cao nên việc dán nó vào bộ giải mã sẽ tạo ra rủi ro mà không mang lại lợi ích chẩn đoán đáng tin cậy.

Đừng suy luận rằng mọi giá trị có hình dạng mã thông báo đều phải được giải mã. Sử dụng công cụ của nhà cung cấp và nhật ký được kiểm soát để phát hiện lỗi làm mới. Cảnh báo rõ ràng của ToolAcre đối với mã thông báo sản xuất được áp dụng với hiệu lực cụ thể ở đây và trình phân tích cú pháp ba phân đoạn của nó không cung cấp thao tác làm mới.

Đối tượng khác nhau — ID khách hàng trong mã thông báo ID so với tài nguyên trong mã thông báo truy cập

Khán giả là đầu mối chắc chắn vì đối tượng tiêu dùng dự định sẽ khác nhau. Mã thông báo ID thường nhắm mục tiêu đến khách hàng, trong khi mã thông báo truy cập nhắm mục tiêu vào tài nguyên. Các mã định danh và biểu diễn chính xác phụ thuộc vào nhà cung cấp và hồ sơ, vì vậy bài viết này không phát minh ra mẫu chuỗi phổ quát.

Tiêu đề `typ` cũng có thể cung cấp nhãn rõ ràng nhưng vẫn giữ nguyên dữ liệu được kiểm soát bằng mã thông báo cho đến khi được xác minh. ToolAcre chỉ cảnh báo khi một chuỗi `typ` khác với `JWT`; nó không nhận ra mọi nhãn hồ sơ hoặc biến một nhãn thành quyết định ủy quyền.

Ví dụ đã hoạt động: so sánh các trường hiển thị mà không coi chúng là bằng chứng về loại mã thông báo

Giải mã hai ví dụ tổng hợp: một ví dụ chứa các yêu cầu xác thực hướng đến khách hàng và một ví dụ chứa đối tượng và phạm vi tài nguyên. Ghi lại sự khác biệt về `aud`, `typ` và tên tải trọng. Bài tập dạy những gì cần hỏi tổ chức phát hành chứ không phải cách chứng minh danh tính của một trong hai ví dụ.

Mã thông báo giả có thể sao chép cùng một nhãn và mã thông báo thực có thể sử dụng các quy ước dành riêng cho nhà cung cấp. Xác nhận loại từ phản hồi phát hành và tài liệu, sau đó xác thực nó với người tiêu dùng dự định. Đầu ra của bộ giải mã là bằng chứng hỗ trợ, không bao giờ là cơ quan quyết định.

Điều này không bao gồm những gì — luồng OAuth phát hành các mã thông báo này, là một chủ đề riêng biệt

Sự so sánh này không giải thích mã ủy quyền, thiết bị hoặc các luồng khác phát hành mã thông báo. Nó cũng không bao gồm các bước xác thực dành riêng cho nhà cung cấp, xem xét nội bộ mã thông báo truy cập không rõ ràng hoặc xoay vòng làm mới. Những chủ đề đó phụ thuộc vào hệ sinh thái đã chọn và việc triển khai.

Hãy thu hẹp câu hỏi gỡ lỗi ngay lập tức: khách hàng đã nhận được thông tin xác thực nào, ai là người tiêu dùng dự kiến ​​và thành phần đáng tin cậy nào xác thực thông tin đó? Việc trả lời ba câu hỏi đó sẽ ngăn hình dạng JWT chung xóa xóa các vai trò giao thức.

Bài học rút ra: hãy xem aud và gõ trước khi gửi - bộ giải mã ToolAcre JWT cho phép bạn kiểm tra loại mã thông báo bạn đang giữ

Xem xét đối tượng và nhập trước khi gửi mã thông báo, nhưng không tin cậy vào một trong hai trường cho đến khi xác minh thành công. Mã thông báo ID thuộc ranh giới xác thực ứng dụng khách của nó; mã thông báo truy cập thuộc về máy chủ tài nguyên của nó. Mã thông báo làm mới thuộc về quy trình làm mới của nhà cung cấp chứ không phải ở API.

ToolAcre giúp đọc các ví dụ gồm ba phần an toàn và không đưa ra yêu cầu phân loại hoặc xác thực chúng. Sử dụng nó để phát hiện các lỗi có thể xảy ra, sau đó để luồng tài liệu và trình xác minh được định cấu hình độc lập thiết lập mục đích thực sự của thông tin xác thực.