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 |
X-MS-TOKEN-GOOGLE-ID-TOKEN X-MS-TOKEN-GOOGLE-ACCESS-TOKEN X-MS-TOKEN-GOOGLE-EXPIRES-ON X-MS-TOKEN-GOOGLE-REFRESH-TOKEN |
|
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:
Google: Tambahkan parameter string kueri
access_type=offline
ke panggilan API/.auth/login/google
Anda. Untuk informasi selengkapnya, lihat Token Google Refresh.Facebook: Tidak menyediakan token penyegaran. Token berumur panjang kedaluwarsa dalam 60 hari (lihat Kedaluwarsa Facebook dan Perpanjangan Token Akses).
Twitter: Token akses tidak kedaluwarsa (lihat Tanya Jawab Umum Twitter OAuth).
Microsoft: Pada https://resources.azure.com, lakukan langkah-langkah berikut:
Pada bagian atas halaman, pilih Baca/Tulis.
Di browser sebelah kiri, navigasikan ke subscriptions><subscription_name>>resourceGroups><resource_group_name>>providers>Microsoft.Web>sites><app_name>>config>authsettingsV2.
Klik Edit.
Ubah properti berikut.
"identityProviders": { "azureActiveDirectory": { "login": { "loginParameters": ["scope=openid profile email offline_access"] } } }
Klik Put.
Catatan
Cakupan yang memberi Anda token refresh adalah offline_access. Lihat cara penggunaannya pada Tutorial: Mengautentikasi dan memberi otorisasi pengguna secara end-to-end di Azure App Service. Cakupan lainnya sudah diminta secara default oleh App Service. Untuk informasi tentang cakupan default ini, lihat Cakupan OpenID Connect.
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.