Các tuyên bố phổ biến được tìm thấy trong các mã thông báo Azure AD OAuth bao gồm những điều sau đây:
* aud (đối tượng): Điều này xác định người nhận mã thông báo dự định, đối với Azure AD B2C, là ID ứng dụng. Các ứng dụng nên xác nhận giá trị này để đảm bảo nó khớp với ID của chúng và từ chối mã thông báo nếu không [3]. Khán giả đồng nghĩa với tài nguyên [3].
* ISS (Nhà phát hành): Yêu cầu này xác định Dịch vụ mã thông báo bảo mật (STS) được xây dựng và trả về mã thông báo và cũng xác định thư mục nơi người dùng được xác thực. Các ứng dụng nên xác nhận yêu cầu này để đảm bảo mã thông báo đến từ điểm cuối thích hợp [3].
* IAT (phát hành tại): Điều này thể hiện thời gian phát hành mã thông báo, trong thời gian sử dụng [3].
* exp (thời gian hết hạn): Điều này cho biết thời gian mà mã thông báo trở nên không hợp lệ, được biểu thị trong thời gian kỷ nguyên. Các ứng dụng nên sử dụng yêu cầu này để xác minh tính hợp lệ của vòng đời mã thông báo [3].
* NBF (không phải trước đó): Yêu cầu này chỉ định thời gian mà mã thông báo trở nên hợp lệ, trong thời gian kỷ nguyên. Nó thường giống như thời gian mã thông báo được cấp và ứng dụng của bạn nên sử dụng yêu cầu này để xác minh tính hợp lệ của thời gian tồn tại mã thông báo [3].
* Ver (phiên bản): Điều này cho biết phiên bản của mã thông báo ID, như được xác định bởi Azure AD B2C [3].
* C_hash (mã băm): Chỉ có trong mã thông báo ID khi mã thông báo được cấp cùng với mã ủy quyền OAUTH 2.0. Nó có thể được sử dụng để xác nhận tính xác thực của mã ủy quyền [3].
* AT_HASH (Hash mã thông báo truy cập): Chỉ có trong mã thông báo ID khi mã thông báo được cấp cùng với mã thông báo truy cập OAuth 2.0 và được sử dụng để xác thực tính xác thực của mã thông báo truy cập [3].
* Nonce: Một chiến lược được sử dụng để giảm thiểu các cuộc tấn công phát lại mã thông báo. Ứng dụng của bạn có thể chỉ định một bản không trong yêu cầu ủy quyền bằng cách sử dụng tham số truy vấn `nonce`. Giá trị bạn cung cấp trong yêu cầu được phát ra không được sửa đổi trong yêu cầu `không phải là mã thông báo ID [3].
* Sub (Chủ đề): Yêu cầu này đại diện cho hiệu trưởng về việc mã thông báo xác nhận thông tin, chẳng hạn như người dùng ứng dụng. Giá trị là bất biến và không thể được chỉ định lại hoặc tái sử dụng. Nó có thể được sử dụng để thực hiện kiểm tra ủy quyền một cách an toàn. Theo mặc định, yêu cầu chủ thể được điền với ID đối tượng của người dùng trong thư mục [3].
* ACR (Tham chiếu lớp ngữ cảnh xác thực): Chỉ được sử dụng với các chính sách cũ [3].
* TFP (Chính sách khung tin cậy): Tên của chính sách được sử dụng để có được mã thông báo ID [3].
* Auth \ _time: Thời gian mà người dùng lần cuối nhập vào thông tin đăng nhập, được biểu thị trong thời gian kỷ nguyên. Không có sự phân biệt đối xử giữa xác thực đó là một đăng nhập mới, một phiên đăng nhập (SSO) hoặc loại đăng nhập khác [3].
* SCP (Phạm vi): Điều này đề cập đến các quyền được cấp cho tài nguyên để có mã thông báo truy cập. Nhiều quyền được cấp được phân tách bằng một không gian [3].
* AZP (Bên ủy quyền): ID ứng dụng của ứng dụng khách đã bắt đầu yêu cầu [3].
* OID: Yêu cầu này chứa định danh duy nhất của một đối tượng trong Azure AD, là bất biến và không thể được chỉ định lại hoặc tái sử dụng. Nó có thể được sử dụng để xác định một đối tượng trong các truy vấn cho Azure AD [1].
Trích dẫn:
[1] https://stackoverflow.com/questions/40972416/what-jwt-claims-from-azure-ad-tokens-can-be-safely-used-for-user-mappings
[2] https://stackoverflow.com/questions/70867353/azure-access-token-contains-info-that-i-thought-would-be-in-the-id-token-and-vi
[3] https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/active-directory-b2c/tokens-overview.md
[4] https://www.descope.com/blog/post/noauth
[5] https://learn.microsoft.com/en-us/entra/identity-platform/access-token-claims-reference
.
[7] https://learn.microsoft.com/en-us/entra/identity-platform/id-token-claims-reference
[8] https://www.descope.com/blog/post/access-token-vs-refresh-token