Antipattern: Menetapkan waktu habis masa berlaku yang lama untuk token OAuth

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Apigee Edge menyediakan framework OAuth 2.0 untuk mengamankan API. OAuth2 adalah salah satu skema otorisasi dan autentikasi berbasis token standar terbuka yang paling populer. Dengan API ini, aplikasi klien dapat mengakses API atas nama pengguna tanpa mengharuskan pengguna memberitahukan nama pengguna dan sandi mereka.

Apigee Edge memungkinkan developer membuat akses dan/atau token refresh dengan menerapkan salah satu dari empat jenis pemberian OAuth2 - kredensial klien, sandi, implisit, dan kode otorisasi - menggunakan kebijakan OAuthv2. Aplikasi klien menggunakan token akses untuk memakai API yang aman. Setiap token akses memiliki waktu habis masa berlakunya sendiri, yang dapat ditetapkan dalam kebijakan OAuthv2.

Token refresh dikeluarkan secara opsional bersama dengan token akses dengan beberapa jenis pemberian. Token refresh digunakan untuk mendapatkan token akses baru yang valid setelah token akses asli berakhir masa berlakunya atau dicabut. Waktu habis masa berlaku untuk token refresh juga dapat ditetapkan dalam kebijakan OAuthv2.

Antipola

Menetapkan waktu habis masa berlaku yang lama untuk token akses dan/atau token refresh dalam kebijakan OAuthv2 akan menyebabkan akumulasi token OAuth dan peningkatan penggunaan ruang disk pada node Cassandra.

Contoh kebijakan OAuthV2 berikut menunjukkan waktu habis masa berlaku yang lama, yaitu 200 hari, untuk token refresh:

<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>

Pada contoh di atas:

  • Token akses ditetapkan dengan waktu habis masa berlaku yang lebih rendah, yaitu 30 menit.
  • Token refresh ditetapkan dengan waktu habis masa berlaku yang sangat lama, yaitu 200 hari.
  • Jika traffic ke API ini adalah 10 permintaan/detik, maka dalam sehari dapat menghasilkan token sebanyak 864.000.
  • Karena masa berlaku token refresh hanya berakhir setelah 200 hari, token tersebut akan tetap berada di penyimpanan data (Cassandra) untuk waktu yang lama sehingga menghasilkan akumulasi berkelanjutan.

Dampak

  • Menghasilkan peningkatan penggunaan ruang disk yang signifikan pada penyimpanan data (Cassandra).
  • Bagi pengguna Private Cloud, hal ini dapat meningkatkan biaya penyimpanan, atau dalam kasus terburuk, disk bisa penuh dan menyebabkan error runtime atau pemadaman layanan.

Praktik Terbaik

Gunakan waktu habis masa berlaku yang lebih rendah yang sesuai untuk akses OAuth dan token refresh, tergantung persyaratan keamanan khusus Anda, sehingga keduanya dapat dihapus permanen dengan cepat dan dengan demikian menghindari akumulasi.

Tetapkan waktu habis masa berlaku untuk token refresh sedemikian rupa sehingga valid untuk periode yang sedikit lebih lama daripada token akses. Misalnya, jika Anda menetapkan 30 menit untuk token akses, lalu menetapkan 60 menit untuk token refresh.

Hal ini memastikan bahwa:

  • Terdapat cukup waktu untuk menggunakan token refresh guna membuat akses baru dan token refresh setelah masa berlaku token akses berakhir.
  • Token refresh akan segera habis masa berlakunya dan dapat dihapus permanen tepat waktu untuk menghindari akumulasi.

Bacaan lebih lanjut