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.
Chuyển đến tài liệu về Apigee X.
thông tin

Apigee Edge cung cấp khung OAuth 2.0 cho các API bảo mật. 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. Thư viện này cho phép các ứng dụng khách thay mặt người dùng truy cập vào API 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 cho phép các nhà phát triển tạo quyền truy cập và/hoặc làm mới mã thông báo bằng cách triển khai một trong 4 loại cấp quyền OAuth2 – thông tin xác thực ứng dụng, mật khẩu, mã uỷ quyền ngầm ẩnmã uỷ quyền – thông qua chính sách OAuthv2. Ứng dụng khách dùng mã truy cập để sử dụng các API an toàn. Mỗi mã truy cập có thời gian hết hạn riêng. Bạn có thể đặt thời gian này trong chính sách OAuthv2.

Nếu muốn, bạn có thể cấp mã làm mới cùng với mã truy cập cùng với một số loại 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.

Phản mẫu

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 sẽ dẫn đến tích lũy 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ý, 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 đa 864.000 mã thông báo trong một ngày.
  • Vì các 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.

Mứ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 tư, việc này có thể làm tăng chi phí lưu trữ, hoặc trong trường hợp xấu nhất là ổ đĩa có thể đã đầy và gây ra lỗi thời gian chạy hoặc ngừng hoạt động.

Phương pháp hay nhất

Hãy đưa ra thời gian hết hạn thích hợp thấp hơn cho hoạt động truy cập OAuth và mã thông báo làm mới tuỳ theo yêu cầu bảo mật cụ thể của bạn để chúng nhanh chóng được xoá hoàn toàn và do đó tránh tình trạng tích luỹ.

Đặt thời gian hết hạn cho mã thông báo làm mới sao cho mã này hợp lệ 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, sau đó đặt 60 phút cho mã làm mới.

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

  • Bạn vẫn có nhiều thời gian để sử dụng mã làm mới nhằm tạo mã truy cập và làm mới sau khi mã truy cập này hết hạn.
  • Mã thông báo làm mới sẽ hết hạn sau một lát và có thể được xoá hoàn toàn kịp thời để tránh việc tích luỹ.

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