Skip to content

OpenID Connect — ID Token và Access Token ​

OIDC bổ sung một loại token mới — ID Token — bên cạnh access token vốn có của OAuth 2.0. Hai loại token này phục vụ hai mục đích hoàn toàn khác nhau, dễ nhầm lẫn:

ID TokenAccess Token
Trả lời câu hỏi"Người dùng này là ai, xác thực khi nào""Ứng dụng được phép làm gì"
Định dạngLuôn là JWTCó thể là JWT hoặc chuỗi bất kỳ (opaque)
Người tiêu thụChính ứng dụng (client) — đọc để biết user đăng nhập là aiResource server / API — dùng để cấp quyền truy cập tài nguyên
Có nên gửi tới API để xin dữ liệu khôngKhôngCó

ID Token chứa các claim tối thiểu: sub (user id), iss, aud, chữ ký, và đặc biệt là nonce — một chuỗi ngẫu nhiên do ứng dụng sinh ra trước khi bắt đầu luồng đăng nhập, gửi kèm trong authorization request. Khi nhận lại ID Token, ứng dụng so khớp nonce trong token với giá trị đã lưu ở phiên hiện tại; nếu khác nhau (ví dụ kẻ tấn công phát lại một ID Token cũ) — từ chối ngay. Đây là cơ chế chống replay attack dành riêng cho ID Token.

OIDC không nhét toàn bộ thông tin hồ sơ người dùng (email, avatar, tên đầy đủ...) vào ID Token để tránh token quá nặng. Thay vào đó, các thông tin này được lấy riêng qua UserInfo endpoint — một API được bảo vệ, chỉ trả dữ liệu khi ứng dụng gửi kèm access_token hợp lệ.