Tiếng Việt

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

Bảy tuyên bố JWT đã đăng ký: iss, sub, aud, exp, nbf, iat và jti

· Lý lịch

jwt data-formats xác thực

Bảy nhãn xác nhận quyền sở hữu JWT đã đăng ký được sắp xếp bên trong một đối tượng tải trọng
Hình minh họa vector ToolAcre gốc

RFC 7519 bảo lưu bảy tên xác nhận quyền sở hữu với ý nghĩa và loại được xác định. Bài đăng này giải thích từng loại, các loại StringOrURI và NumericDate đằng sau chúng cũng như cách các xác nhận quyền sở hữu đã đăng ký, công khai và riêng tư cùng tồn tại.

Tôi nên sử dụng tên xác nhận quyền sở hữu nào? — câu hỏi thiết kế và câu trả lời từ cơ quan đăng ký

Việc chọn tên xác nhận quyền sở hữu một phần là quyết định về khả năng tương tác. Việc sử dụng lại tên đã đăng ký mang lại cho người đọc và thư viện một ý nghĩa đã được thiết lập, trong khi tên dành riêng cho ứng dụng yêu cầu tài liệu địa phương. ToolAcre nhận ra bảy tên cốt lõi trong bảng mô tả của nó và hiển thị các xác nhận quyền sở hữu khác mà không chỉ định ngữ nghĩa.

Một cái tên quen thuộc không tự động đáng tin cậy. Bộ giải mã đọc bất kỳ đối tượng nào mà mã thông báo chứa và không bao giờ xác minh chữ ký của nó. Từ vựng đã đăng ký giúp con người phân loại dữ liệu; chỉ người xác minh đáng tin cậy mới có thể xác minh rằng nhà phát hành đã cung cấp giá trị được bảo vệ.

iss và sub được hiển thị dưới dạng chuỗi; việc triển khai này không thực thi cú pháp StringOrURI

`iss` xác định ai đã phát hành mã thông báo đó và `sub` xác định ai hoặc nội dung của mã thông báo đó. ToolAcre mô tả cả hai và hiển thị giá trị của chúng, nhưng việc triển khai nó không xác thực ngữ pháp StringOrURI hoặc so sánh một trong hai trường với cấu hình dịch vụ.

Người xác minh phải ràng buộc nhà phát hành dự kiến ​​với tài liệu chính đáng tin cậy và diễn giải chủ đề trong không gian tên của nhà phát hành đó. Việc sao chép chuỗi phát hành đã biết vào tải trọng giả tạo sẽ khiến bộ giải mã trông có vẻ thuyết phục mà không cần thiết lập nguồn gốc. Chỉ sử dụng các trường này sau khi xác minh bằng mật mã.

aud - người nhận dự định, dưới dạng một chuỗi hoặc một mảng

`aud` mô tả người nhận dự định và có thể được biểu thị dưới dạng một giá trị hoặc danh sách theo quy tắc mã thông báo hiện hành. Bảng xác nhận quyền sở hữu chung của ToolAcre giữ nguyên các mảng dưới dạng văn bản JSON nhưng không quyết định liệu dịch vụ hiện tại có xuất hiện trong đó hay không.

Khán giả là theo ngữ cảnh. Mã thông báo được xác thực tương tự có thể phù hợp với một API nhưng lại phù hợp với một mã khác. Máy chủ tài nguyên cần có mã định danh dự kiến ​​trong cấu hình đáng tin cậy và phải từ chối thông tin không khớp thay vì để mã thông báo xác định nơi mã thông báo sẽ được chấp nhận.

exp, nbf và iat - ba yêu cầu NumericDate ràng buộc mã thông báo kịp thời

`exp`, `nbf` và `iat` là các xác nhận quyền sở hữu NumericDate. ToolAcre coi các số hữu hạn là giây kể từ kỷ nguyên, nhân với 1,000 để hiển thị Ngày và nhãn hết hạn hoặc không trước đó so với đồng hồ trình duyệt. Nó không xác định sự chậm trễ hoặc thực thi sự chấp nhận của máy chủ.

Thời hạn sử dụng đánh dấu ranh giới cuối cùng được xác nhận, không phải là bằng chứng cho thấy mã thông báo đã từng hợp lệ. Không-trước đánh dấu ranh giới bắt đầu được xác nhận quyền sở hữu và được phát hành vào lúc ghi lại thời gian tạo được xác nhận quyền sở hữu. Mỗi cái có thể bị giả mạo trong một tải trọng, do đó số học về thời gian phải tuân theo việc xác minh chữ ký trong một luồng đáng tin cậy.

jti - mã định danh duy nhất để phát hiện phát lại và danh sách từ chối

`jti` là mã định danh mã thông báo. Các hệ thống có thể sử dụng mã định danh được xác thực, được tạo phù hợp cho trạng thái theo dõi phát lại hoặc thu hồi, nhưng chỉ riêng yêu cầu đó không cung cấp thuộc tính nào cả. ToolAcre mô tả nó như một id mã thông báo để phát hiện phát lại và hiển thị giá trị chính xác của nó.

Tính duy nhất, hành vi lưu trữ và tra cứu thuộc về kiến ​​trúc của nhà phát hành và người xác minh. Bộ giải mã không thể xác định liệu một mã thông báo khác có sử dụng lại mã định danh hay không hoặc liệu danh sách từ chối có chứa nó hay không. Hãy coi nó như một giá trị tương quan ứng cử viên cho đến khi hệ thống đáng tin cậy xung quanh cung cấp bằng chứng.

Mô tả đã đăng ký và xác nhận quyền sở hữu dành riêng cho ứng dụng trong màn hình ToolAcre

Việc triển khai chỉ phân biệt tên đã đăng ký thông qua văn bản giải thích. Mọi thuộc tính tải trọng vẫn được trả về bởi `listClaims`; các tên không xác định nhận được mô tả rỗng và giao diện người dùng gắn nhãn cho chúng dành riêng cho ứng dụng. Nó không tham khảo cơ quan đăng ký công cộng hoặc ngăn ngừa xung đột tên riêng.

Ranh giới đó tránh việc yêu cầu nhiều hơn nguồn chứng minh. Các nhóm nên ghi lại các yêu cầu riêng tư của mình và chọn tên có khả năng chống xung đột khi khả năng tương tác có vấn đề. Việc bộ giải mã không có mô tả có nghĩa là “không có trong bảng bảy tên cục bộ này”, không phải “không hợp lệ” hoặc “an toàn để bỏ qua”.

Ví dụ hoạt động - đọc tải trọng thực tế và phân loại từng xác nhận quyền sở hữu

Hãy xem xét `{"iss":"https://issuer.example","sub":"user-7","aud":["orders"],"exp":1717246800,"nbf":1717243100,"iat":1717243200,"jti":"demo-9","tenant":"north"}`. ToolAcre mô tả bảy trường đã đăng ký và nhãn `tenant` dành riêng cho ứng dụng trong khi định dạng ba lần số.

Sự phân loại này giúp xem xét thiết kế tải trọng. Nó không xác thực URL, chủ đề, đối tượng, ngày tháng, số nhận dạng hoặc đối tượng thuê. Mã thông báo giả mạo có thể tái tạo chính xác đối tượng. Chỉ đưa các xác nhận quyền sở hữu đã được xác minh vào logic ủy quyền, sau đó áp dụng các giá trị dự kiến ​​của dịch vụ tiêu dùng.

Bài học rút ra: sử dụng tên đã đăng ký khi chúng phù hợp — bộ giải mã ToolAcre JWT hiển thị tải trọng để bạn có thể biết nhà phát hành thực sự đặt ra xác nhận nào

Sử dụng tên đã đăng ký khi ý nghĩa được xác định của chúng phù hợp, vì từ vựng dễ nhận biết sẽ giảm bớt việc dịch không cần thiết. Giữ các trường riêng tư được ghi lại và tối thiểu. Không quá tải `sub`, `aud` hoặc yêu cầu thời gian có ý nghĩa cục bộ khác chỉ vì mã xuôi dòng đã phân tích cú pháp khóa đó.

ToolAcre có thể hiển thị tên nào mà mã thông báo an toàn mang và cách hiển thị các xác nhận bằng số của nó. Nó không thể chứng nhận bất kỳ giá trị nào. Kết quả hữu ích của việc giải mã là một bản kiểm kê để xem xét; kết quả hữu ích của việc xác minh và chính sách là một quyết định và những quyết định này vẫn tách biệt.