Bekerja dengan token OAuth di autentikasi Azure App Service

Artikel ini menunjukkan cara bekerja dengan token OAuth ketika menggunakan autentikasi dan otorisasi bawaan di App Service.

Mengambil token dalam kode aplikasi

Dari kode server Anda, token khusus penyedia disuntikkan ke header permintaan, sehingga Anda dapat dengan mudah mengaksesnya. Tabel berikut ini memperlihatkan kemungkinan nama header token:

Penyedia Nama header
Microsoft Entra ID X-MS-TOKEN-AAD-ID-TOKEN
X-MS-TOKEN-AAD-ACCESS-TOKEN
X-MS-TOKEN-AAD-EXPIRES-ON
X-MS-TOKEN-AAD-REFRESH-TOKEN
Token Facebook X-MS-TOKEN-FACEBOOK-ACCESS-TOKEN
X-MS-TOKEN-FACEBOOK-EXPIRES-ON
Google X-MS-TOKEN-GOOGLE-ID-TOKEN
X-MS-TOKEN-GOOGLE-ACCESS-TOKEN
X-MS-TOKEN-GOOGLE-EXPIRES-ON
X-MS-TOKEN-GOOGLE-REFRESH-TOKEN
Twitter X-MS-TOKEN-TWITTER-ACCESS-TOKEN
X-MS-TOKEN-TWITTER-ACCESS-TOKEN-SECRET

Catatan

Kerangka kerja bahasa yang berbeda mungkin menampilkan {i>header

Dari kode klien Anda (seperti aplikasi seluler atau JavaScript di browser), kirim permintaan HTTP GET ke /.auth/me (penyimpanan token harus diaktifkan). JSON yang dikembalikan berisi token khusus penyedia.

Catatan

Token akses adalah untuk mengakses sumber daya penyedia, sehingga ada hanya jika Anda mengonfigurasi penyedia Anda dengan rahasia klien. Untuk melihat cara mendapatkan token refresh, lihat Segarkan token akses.

{i>Refresh

Saat token akses penyedia Anda (bukan token sesi) kedaluwarsa, Anda perlu mengautentikasi ulang pengguna sebelum Anda menggunakan token itu lagi. Anda dapat menghindari kedaluwarsa token dengan melakukan panggilan GET ke titik akhir /.auth/refresh aplikasi Anda. Saat dipanggil, App Service secara otomatis menyegarkan token akses di penyimpanan token untuk pengguna yang diautentikasi. Permintaan token berikutnya berdasarkan kode aplikasi Anda mendapat token yang disegarkan. Namun, agar penyegaran token berfungsi, penyimpanan token harus berisi token penyegaran penyedia Anda. Cara mendapatkan token penyegaran didokumentasikan oleh setiap penyedia, tetapi daftar berikut ini adalah ringkasan singkatnya:

Setelah penyedia Anda dikonfigurasi, Anda dapat menemukan token refresh dan waktu kedaluwarsa untuk token akses di penyimpanan token.

Untuk menyegarkan token akses Anda kapan saja, cukup panggil /.auth/refresh dalam bahasa apa pun. Cuplikan berikut menggunakan jQuery untuk menyegarkan token akses Anda dari klien JavaScript.

function refreshTokens() {
  let refreshUrl = "/.auth/refresh";
  $.ajax(refreshUrl) .done(function() {
    console.log("Token refresh completed successfully.");
  }) .fail(function() {
    console.log("Token refresh failed. See application logs for details.");
  });
}

Jika pengguna mencabut izin yang diberikan ke aplikasi Anda, panggilan Anda ke /.auth/me dapat gagal dengan respons 403 Forbidden. Untuk mendiagnosis kesalahan, periksa detail log aplikasi Anda.

Memperpanjang masa tenggang kedaluwarsa sesi

Sesi terautentikasi berakhir setelah 8 jam. Setelah sesi yang diautentikasi berakhir, ada masa tenggang 72 jam secara default. Selama masa tenggang ini, Anda diizinkan untuk menyegarkan token sesi dengan App Service tanpa mengautentikasi ulang pengguna. Anda hanya dapat memanggil /.auth/refresh ketika token sesi Anda menjadi tidak valid, dan Anda tidak perlu melacak kedaluwarsa token sendiri. Setelah masa tenggang 72 jam berakhir, pengguna harus masuk lagi untuk mendapat token sesi yang valid.

Jika 72 jam tidak cukup waktu untuk Anda, Anda dapat memperpanjang jendela kedaluwarsa ini. Memperpanjang kedaluwarsa dalam jangka waktu yang lama dapat memiliki implikasi keamanan yang signifikan (seperti ketika token autentikasi bocor atau dicuri). Jadi Anda harus membiarkannya pada waktu default 72 jam atau mengatur periode ekstensi ke nilai terkecil.

Untuk memperpanjang jendela kedaluwarsa default, jalankan perintah berikut ini di Cloud Shell.

az webapp auth update --resource-group <group_name> --name <app_name> --token-refresh-extension-hours <hours>

Catatan

Masa tenggang hanya berlaku untuk sesi App Service terautentikasi, bukan token dari penyedia identitas. Tidak ada masa tenggang untuk token penyedia yang kedaluwarsa.

Langkah berikutnya