Vercel, một nền tảng phát triển hàng đầu, vừa công bố một cải tiến quan trọng trong hệ thống OIDC (OpenID Connect) của mình: hỗ trợ Đối tượng Token OIDC Tùy chỉnh (Custom OIDC Token Audiences). Tính năng này, được cung cấp thông qua bộ phát hành OIDC của Vercel (oidc.vercel.com), cho phép các triển khai yêu cầu token OIDC với một 'khẳng định đối tượng' (audience claim) cụ thể. Điều này mở ra khả năng xác thực dịch vụ-với-dịch vụ an toàn hơn với các nhà cung cấp bên thứ ba. 🚀
Tại Sao Cần Custom Audiences? 🤔
Trước đây, các token OIDC của Vercel được phát hành với một đối tượng cố định (https://vercel.com/{owner}). Mặc dù hầu hết các nhà cung cấp đám mây không yêu cầu giá trị đối tượng cụ thể, việc sử dụng một đối tượng duy nhất cho mỗi nhà cung cấp là một thực tiễn bảo mật tốt nhất. Lý do rất đơn giản nhưng cực kỳ quan trọng:
> Nếu một nhà cung cấp bị xâm nhập, kẻ tấn công không thể phát lại token đó để sử dụng với một nhà cung cấp khác. Khẳng định aud (audience) không khớp sẽ khiến quá trình xác minh thất bại.
Tính năng mới này giúp việc tạo token dành riêng cho nhà cung cấp trở nên dễ dàng hơn bao giờ hết, mà không cần phải quản lý thêm bất kỳ cơ sở hạ tầng bổ sung nào. Đây là một bước tiến lớn trong việc giảm thiểu rủi ro bảo mật cho các ứng dụng của bạn.
Cơ Chế Hoạt Động Của Custom Audiences ✨
Khi một triển khai Vercel chạy, nó sẽ nhận được một token OIDC được ký bởi Vercel. Dịch vụ trao đổi mới của Vercel sẽ chấp nhận token này và trả về một token mới – được ký bằng cùng một khóa nhưng với một khẳng định đối tượng (aud) đã được cập nhật, nhắm mục tiêu đến dịch vụ hạ nguồn của bạn.
Chi tiết về Token đã được trao đổi:
* Giữ nguyên tất cả các khẳng định gốc (dự án, môi trường, chủ sở hữu, thời gian hết hạn). * Đặt iss (tổ chức phát hành) thành https://oidc.vercel.com/{owner}, được giới hạn trong phạm vi nhóm sở hữu triển khai. * Bao gồm một khẳng định act (người thực hiện) với đối tượng và thời gian phát hành của token gốc, cung cấp một chuỗi ủy quyền có thể kiểm toán. * Cập nhật aud (đối tượng) thành đối tượng hạ nguồn được yêu cầu. * Cập nhật iat (thời gian phát hành) thành dấu thời gian hiện tại, phản ánh thời điểm token mới được tạo.
Bạn cũng có thể tùy chọn truyền jti (JWT ID) để gán một định danh duy nhất cho token đã trao đổi. Điều này cực kỳ hữu ích cho việc kiểm toán và theo dõi việc sử dụng token giữa các dịch vụ, ví dụ như tương quan một lần trao đổi token cụ thể với các cuộc gọi API hạ nguồn trong nhật ký của bạn. 🔍
Các dịch vụ hạ nguồn sẽ xác minh token đã trao đổi bằng cách sử dụng khóa công khai có sẵn tại https://oidc.vercel.com/{owner}/.well-known/jwks. Cả khóa ký và điểm cuối trao đổi token đều được nhân rộng trên tất cả các khu vực của Vercel, đảm bảo việc trao đổi token có độ trễ thấp bất kể triển khai đang chạy ở đâu. Đây là một cải tiến đáng giá, mang lại sự linh hoạt và bảo mật cao hơn cho các nhà phát triển. 💡
--- Nguồn: Vercel Changelog