aud
Tuyên bố JWT (Đối tượng)
Theo RFC 7519 :
Yêu cầu "aud" (đối tượng) xác định những người nhận mà JWT dành cho. Mỗi hiệu trưởng dự định xử lý JWT PHẢI tự xác định mình với một giá trị trong yêu cầu của khán giả. Nếu bên xử lý chính xác nhận quyền sở hữu không tự xác định giá trị trong xác nhận quyền sở hữu "kiểm toán" khi xác nhận quyền sở hữu này có mặt, thì JWT PHẢI bị từ chối. Trong trường hợp chung, giá trị "aud" là một mảng các chuỗi phân biệt chữ hoa chữ thường, mỗi chuỗi chứa một giá trị StringOrURI. Trong trường hợp đặc biệt khi JWT có một đối tượng, giá trị "aud" CÓ THỂ là một chuỗi phân biệt chữ hoa chữ thường duy nhất chứa giá trị StringOrURI. Việc giải thích các giá trị đối tượng nói chung là ứng dụng cụ thể.
Việc sử dụng xác nhận quyền sở hữu này là TÙY CHỌN.
Yêu cầu đối tượng ( aud
) như được xác định bởi thông số kỹ thuật là chung và là ứng dụng cụ thể. Mục đích sử dụng là để xác định những người nhận dự định của mã thông báo. Ý nghĩa của người nhận là ứng dụng cụ thể. Giá trị đối tượng là một danh sách các chuỗi hoặc có thể là một chuỗi đơn nếu chỉ có một aud
xác nhận quyền sở hữu. Người tạo mã thông báo không thực thi điều đó đã aud
được xác thực chính xác, trách nhiệm là của người nhận để xác định xem mã thông báo có nên được sử dụng hay không.
Dù giá trị là gì, khi người nhận xác thực JWT và nó muốn xác thực rằng mã thông báo được dự định sử dụng cho các mục đích của nó, nó PHẢI xác định giá trị nào trong aud
nhận dạng chính nó và mã thông báo chỉ nên xác thực nếu ID được khai báo của người nhận là trình bày trong aud
yêu cầu. Nó không quan trọng nếu đây là một URL hoặc một số chuỗi ứng dụng cụ thể khác. Ví dụ: nếu hệ thống của tôi quyết định tự nhận dạng aud
bằng chuỗi: api3.app.com
thì nó sẽ chỉ chấp nhận JWT nếu aud
xác nhận quyền sở hữu chứa api3.app.com
trong danh sách các giá trị đối tượng của nó.
Tất nhiên người nhận có thể chọn bỏ qua aud
, vì vậy điều này chỉ hữu ích nếu người nhận muốn xác thực tích cực rằng mã thông báo được tạo riêng cho nó.
Giải thích của tôi dựa trên đặc điểm kỹ thuật là aud
xác nhận quyền sở hữu hữu ích để tạo JWT được xây dựng theo mục đích chỉ hợp lệ cho các mục đích nhất định. Đối với một hệ thống, điều này có nghĩa là bạn muốn một mã thông báo hợp lệ cho một số tính năng, nhưng không hợp lệ cho một số tính năng khác. Bạn có thể phát hành mã thông báo chỉ được giới hạn cho một "đối tượng" nhất định, trong khi vẫn sử dụng cùng một khóa và thuật toán xác thực.
Vì trong trường hợp điển hình, JWT được tạo bởi một dịch vụ đáng tin cậy và được sử dụng bởi các hệ thống đáng tin cậy khác (hệ thống không muốn sử dụng mã thông báo không hợp lệ), các hệ thống này chỉ cần phối hợp các giá trị mà chúng sẽ sử dụng.
Tất nhiên, aud
là hoàn toàn tùy chọn và có thể bỏ qua nếu trường hợp sử dụng của bạn không đảm bảo. Nếu bạn không muốn hạn chế các mã thông báo được sử dụng bởi các đối tượng cụ thể hoặc không có hệ thống nào trong số các hệ thống của bạn thực sự xác nhận aud
mã thông báo, thì điều đó là vô ích.
Ví dụ: Mã thông báo truy cập và làm mới
Một ví dụ tiếp theo (nhưng đơn giản) mà tôi có thể nghĩ đến là có lẽ chúng tôi muốn sử dụng JWT để truy cập và làm mới mã thông báo mà không cần phải triển khai các thuật toán và khóa mã hóa riêng biệt, nhưng chỉ muốn đảm bảo rằng mã thông báo truy cập sẽ không xác thực dưới dạng mã làm mới hoặc ngược lại -sao.
Bằng cách sử dụng, aud
chúng tôi có thể chỉ định yêu cầu về refresh
mã thông báo làm mới và yêu cầu về access
mã thông báo truy cập khi tạo các mã thông báo này. Khi có yêu cầu nhận mã truy cập mới từ mã làm mới, chúng tôi cần xác thực rằng mã làm mới đó là mã làm mới chính hãng. Việc aud
xác thực như được mô tả ở trên sẽ cho chúng tôi biết liệu mã thông báo có thực sự là một mã thông báo làm mới hợp lệ hay không bằng cách xem xét cụ thể yêu cầu của refresh
trong aud
.
ID ứng dụng khách OAuth so với aud
Xác nhận quyền sở hữu JWT
ID ứng dụng khách OAuth hoàn toàn không liên quan và không có mối tương quan trực tiếp với các aud
xác nhận quyền sở hữu JWT . Theo quan điểm của OAuth, các mã thông báo là các vật thể không trong suốt.
Ứng dụng chấp nhận các mã thông báo này có trách nhiệm phân tích cú pháp và xác thực ý nghĩa của các mã thông báo này. Tôi không thấy nhiều giá trị trong việc chỉ định ID ứng dụng khách OAuth trong aud
xác nhận quyền sở hữu JWT .
aud REQUIRED for session_token. Contains the client_id of the client receiving the assertion.