Phản mẫu: Đặt thời gian hết hạn dài cho mã thông báo OAuth

Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X.
thông tin

Apigee Edge cung cấp khung OAuth 2.0 để bảo mật các API. OAuth2 là một trong những lược đồ xác thực và uỷ quyền dựa trên mã thông báo, theo tiêu chuẩn mở phổ biến nhất. OAuth cho phép các ứng dụng truy cập vào API thay cho người dùng mà không yêu cầu người dùng tiết lộ tên người dùng và mật khẩu của họ.

Apigee Edge cho phép nhà phát triển tạo mã truy cập và/hoặc mã làm mới bằng cách triển khai một trong bốn loại cấp OAuth2 – thông tin đăng nhập của ứng dụng, mật khẩu, ngầm địnhmã uỷ quyền – bằng cách sử dụng chính sách OAuthv2. Các ứng dụng sử dụng mã truy cập để sử dụng các API bảo mật. Mỗi mã truy cập đều có thời gian hết hạn riêng và bạn có thể đặt thời gian này trong chính sách OAuthv2.

Mã làm mới được cấp cùng với mã truy cập (không bắt buộc) đối với một số loại cấp quyền. Mã làm mới được dùng để lấy mã truy cập mới, hợp lệ sau khi mã truy cập ban đầu hết hạn hoặc bị thu hồi. Bạn cũng có thể đặt thời gian hết hạn cho mã làm mới trong chính sách OAuthv2.

Antipattern

Việc đặt thời gian hết hạn dài cho mã truy cập và/hoặc mã làm mới trong chính sách OAuthv2 dẫn đến việc tích luỹ mã thông báo OAuth và tăng mức sử dụng dung lượng ổ đĩa trên các nút Cassandra.

Ví dụ sau đây về chính sách OAuthV2 cho thấy thời gian hết hạn dài là 200 ngày đối với mã làm mới:

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <RefreshTokenExpiresIn>17280000000</RefreshTokenExpiresIn> <!-- 200 days -->
    <SupportedGrantTypes>
      <GrantType>password</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

Trong ví dụ trên:

  • Mã truy cập được đặt với thời gian hết hạn thấp hơn một cách hợp lý là 30 phút.
  • Mã làm mới được đặt với thời gian hết hạn rất dài là 200 ngày.
  • Nếu lưu lượng truy cập đến API này là 10 yêu cầu/giây, thì API này có thể tạo ra tới 864.000 mã thông báo trong một ngày.
  • Vì mã làm mới chỉ hết hạn sau 200 ngày, nên chúng vẫn tồn tại trong kho dữ liệu (Cassandra) trong một thời gian dài, dẫn đến việc tích luỹ liên tục.

Tác động

  • Dẫn đến sự tăng trưởng đáng kể về mức sử dụng dung lượng ổ đĩa trên kho dữ liệu (Cassandra).
  • Đối với người dùng Đám mây riêng, điều này có thể làm tăng chi phí lưu trữ hoặc trong trường hợp xấu nhất, ổ đĩa có thể đầy và dẫn đến lỗi thời gian chạy hoặc sự cố ngừng hoạt động.

Phương pháp hay nhất

Sử dụng thời gian hết hạn thấp hơn thích hợp cho mã truy cập và mã làm mới OAuth, tuỳ thuộc vào các yêu cầu cụ thể về bảo mật của bạn, để các mã này được xoá nhanh chóng và do đó tránh bị tích luỹ.

Đặt thời gian hết hạn cho mã làm mới sao cho mã này có hiệu lực trong khoảng thời gian dài hơn một chút so với mã truy cập. Ví dụ: nếu bạn đặt 30 phút cho mã truy cập và sau đó đặt 60 phút cho mã làm mới.

Điều này giúp đảm bảo rằng:

  • Bạn có đủ thời gian để sử dụng mã làm mới nhằm tạo mã truy cập và mã làm mới mới sau khi mã truy cập hết hạn.
  • Mã làm mới sẽ hết hạn sau một khoảng thời gian ngắn và có thể được xoá kịp thời để tránh tích luỹ.

Tài liệu đọc thêm