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

Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Lihat dokumentasi Apigee Edge.

Apigee menyediakan serangkaian alat dan kebijakan yang memungkinkan Anda menerapkan autentikasi berbasis token OAuth 2.0 untuk mengamankan API. OAuth2, yang dijelaskan dalam IETF RFC 6749, adalah standar terbuka yang paling banyak didukung untuk autentikasi dan otorisasi untuk API. Fungsi ini menetapkan token sebagai kredensial format standar yang dikirim aplikasi klien ke implementasi API. Implementasi API dapat memverifikasi token untuk menentukan apakah klien diberi otorisasi untuk mengakses API.

Apigee memungkinkan developer membuat token akses dan/atau token refresh dengan menerapkan salah satu dari empat jenis pemberian OAuth2 - kredensial klien, sandi, implisit, dan kode otorisasi - menggunakan kebijakan OAuthv2. Selain itu, developer API dapat menggunakan Apigee untuk menerapkan grant kustom, termasuk grant yang mengikuti pola Token Exchange, seperti yang dijelaskan dalam IETF RFC 8693. Aplikasi klien kemudian menggunakan token akses untuk menggunakan API aman. Setiap token akses memiliki waktu habis masa berlakunya sendiri, yang dapat ditetapkan di kebijakan OAuthv2.

Apigee dapat secara opsional membuat dan menampilkan token pembaruan beserta token akses dengan beberapa jenis pemberian. Klien menggunakan token refresh untuk mendapatkan token akses baru setelah token akses asli dicabut atau masa berlakunya berakhir. Waktu habis masa berlaku untuk token refresh juga dapat ditetapkan di kebijakan OAuthv2.

Antipola

Menetapkan waktu habis masa berlaku yang lama untuk token akses atau token refresh di kebijakan OAuthv2 akan menyebabkan periode kerentanan yang diperluas jika terjadi kebocoran token, yang merupakan risiko keamanan. Hal ini juga dapat menyebabkan akumulasi token OAuth di penyimpanan persisten, yang dapat menyebabkan penurunan performa dari waktu ke waktu.

Contoh 1

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

<OAuthV2 name="OAuth-GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>864000000</ExpiresIn> <!-- 10 days -->
    <RefreshTokenExpiresIn>864000000</RefreshTokenExpiresIn> <!-- 10 days -->
    <SupportedGrantTypes>
      <GrantType>authorization_code</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

Dalam contoh di atas:

  • Masa berlaku token akses ditetapkan ke 10 hari.
  • Masa berlaku token refresh juga ditetapkan ke 10 hari.

Dampak

Token akses yang memiliki masa aktif lama menimbulkan risiko keamanan. Jika terjadi kebocoran atau kehilangan token, token berumur pendek akan otomatis berakhir masa berlakunya dan menjadi tidak berguna, sedangkan token berumur panjang akan terus memberikan akses ke API untuk jangka waktu yang berpotensi diperpanjang, sehingga meningkatkan periode kerentanan.

Token akses harus memiliki masa berlaku yang singkat, mungkin sekitar 30 menit atau kurang, dan masa berlaku tersebut harus jauh lebih singkat daripada masa berlaku token refresh.

Contoh 2

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

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

Dalam contoh di atas:

  • Token akses ditetapkan dengan waktu habis masa berlaku yang wajar dan singkat, 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, API ini dapat menghasilkan hingga 864.000 token dalam sehari.
  • Masa berlaku token refresh berakhir setelah 200 hari; token akan terakumulasi di penyimpanan data selama seluruh masa berlakunya.

Dampak

Masa berlaku token refresh yang diperpanjang berpotensi menyebabkan penurunan performa dari waktu ke waktu, karena token dalam jumlah besar akan terakumulasi di penyimpanan data. Di Apigee hybrid, akumulasi token yang berlebihan juga dapat berkontribusi pada habisnya ruang disk di lapisan persistensi.

Praktik terbaik

Gunakan waktu habis masa berlaku untuk token akses dan token refresh OAuth yang sesuai dengan persyaratan keamanan tertentu Anda, untuk mengurangi periode kerentanan token yang bocor dan menghindari akumulasi token di penyimpanan data. Titik awal yang baik untuk masa berlaku token akses adalah 30 menit; untuk masa berlaku token refresh, mulai dengan 24 jam.

Tetapkan waktu habis masa berlaku untuk token refresh sedemikian rupa sehingga valid untuk kelipatan masa aktif token akses. Misalnya, jika Anda menetapkan 30 menit untuk token akses, tetapkan masa berlaku token refresh menjadi 24 jam, atau 7 hari, atau apa pun yang sesuai untuk pengalaman pengguna yang perlu Anda dukung.

Bacaan lebih lanjut