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 để các API bảo mật. OAuth2 là một trong những phương thức xác thực phổ biến nhất dựa trên mã thông báo, tiêu chuẩn mở và mô hình uỷ quyền. API này cho phép các ứng dụng khách truy cập API thay mặt cho người dùng mà không cần 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 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 bốn loại cấp quyền OAuth2 - thông tin đăng nhập của khách hàng, mật khẩu, ngầm ẩnmã uỷ quyền - bằng cách sử dụng chính sách OAuthv2. Ứng dụng dùng mã truy cập để sử dụng API bảo mật. Mỗi mã truy cập có thời hạn riêng (bạn có thể đặt thời gian này trong chính sách OAuthv2.

Bạn có thể chọn cấp mã làm mới cùng với mã truy cập, trong đó có một số loại cấp. Làm mới mã thông báo này đượ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 của mã làm mới trong chính sách OAuthv2.

Phản mẫu

Đặ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 kéo 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 thiết lập 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 thiết lập 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 vào API này là 10 yêu cầu/giây, thì nó có thể tạo ra 864.000 mã thông báo sau một ngày nữa.
  • Vì mã làm mới chỉ hết hạn sau 200 ngày nên mã này sẽ vẫn còn trong kho dữ liệu (Cassandra) trong một thời gian dài dẫn đến sự tích luỹ liên tục.

Tác động

  • Dẫn đến sự gia tăng đáng kể mức sử dụng dung lượng ổ đĩa trên kho dữ liệu (Cassandra).
  • Đối với người dùng Cloud 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, ổ đĩa có thể bị đầy và dẫn đến lỗi thời gian chạy hoặc tình trạng ngừng dịch vụ.

Phương pháp hay nhất

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

Đặt thời gian hết hạn cho mã làm mới sao cho hợp lệ trong khoảng thời gian lâu hơn một chút 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:

  • Còn nhiều thời gian để dùng mã làm mới nhằm tạo quyền truy cập mới và mã làm mới sau mã truy cập đã hết hạn.
  • Mã làm mới sẽ hết hạn sau một lát và có thể bị xoá hoàn toàn kịp thời để để tránh tình trạng tích luỹ.

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