Bagikan melalui


Mengautentikasi Permintaan ke Azure Batch

Setiap permintaan yang dibuat terhadap layanan Batch harus diautentikasi. Layanan Batch mendukung autentikasi baik melalui Kunci Bersama atau Microsoft Entra ID.

Autentikasi melalui Kunci Bersama

Permintaan terautentikasi memerlukan dua header: header Tanggal atau tanggal okp dan header Otorisasi . Bagian berikut menjelaskan cara membuat header ini.

Tentukan header tanggal

Semua permintaan yang diautentikasi harus menyertakan tanda waktu Waktu Universal Terkoordinasi (UTC) untuk permintaan tersebut. Anda dapat menentukan tanda waktu baik di header tanggal ocp , atau di header Tanggal HTTP/HTTPS standar. Jika kedua header ditentukan untuk permintaan, nilai tanggal ocp digunakan sebagai waktu pembuatan permintaan.

Layanan Batch harus menerima permintaan dalam waktu 15 menit setelah dibuat. Dengan melakukan ini, layanan dijaga dari serangan keamanan, seperti serangan pemutaran ulang. Header tanggal ocp disediakan karena beberapa pustaka klien HTTP dan proksi secara otomatis mengatur header Tanggal , dan tidak memberi Anda kesempatan untuk membaca nilainya untuk menyertakannya dalam permintaan terautentikasi. Jika Anda mengatur tanggal-ocp, buat tanda tangan dengan nilai kosong untuk header Tanggal .

Tentukan header otorisasi

Permintaan yang diautentikasi harus menyertakan header Otorisasi . Untuk mengautentikasi permintaan, Anda harus menandatangani permintaan dengan kunci untuk akun yang membuat permintaan dan meneruskan tanda tangan tersebut sebagai bagian dari permintaan.

Format untuk header Otorisasi adalah sebagai berikut:

Authorization="SharedKey <AccountName>:<Signature>"  

SharedKey adalah nama skema otorisasi, AccountName adalah nama akun yang meminta sumber daya, dan Signature merupakan Kode Autentikasi Pesan berbasis Hash (HMAC) yang dibangun dari permintaan, dihitung dengan menggunakan algoritma SHA256, dan kemudian dikodekan dengan menggunakan pengodean Base64.

Bagian berikut menjelaskan cara membuat header Otorisasi .

Membuat string tanda tangan

Saat Anda membuat string tanda tangan, ingatlah hal berikut:

  • Bagian VERB dari string adalah kata kerja HTTP, seperti GET atau POST, dan harus huruf besar.

  • Setiap header yang disertakan dalam string tanda tangan mungkin hanya muncul sekali.

  • Nilai semua header HTTP standar harus disertakan dalam string dalam urutan yang ditunjukkan dalam format tanda tangan, tanpa nama header. Header ini mungkin kosong jika tidak ditentukan sebagai bagian dari permintaan; dalam hal ini, hanya karakter baris baru yang diperlukan.

  • Saat kata kerja POST, nilai Jenis Konten dan Panjang Konten diperlukan sebagai header permintaan dan sebagai nilai dalam string tanda tangan. Jenis Konten harus diatur ke aplikasi/json; odata=minimalmetadata.

  • Jika header tanggal ocp ditentukan, header Tanggal tidak diperlukan, cukup tentukan baris kosong untuk bagian Tanggal string tanda tangan. Dalam hal ini, ikuti instruksi di bagian Buat string header kanonis untuk menambahkan header tanggal ocp .

  • Semua karakter baris baru (\n) yang ditampilkan diperlukan dalam string tanda tangan.

  • Untuk informasi terperinci tentang cara membuat CanonicalizedHeaders string dan CanonicalizedResource yang membentuk bagian dari string tanda tangan, lihat bagian yang sesuai nanti dalam topik ini.

Untuk mengodekan string tanda tangan untuk permintaan terhadap layanan Batch, gunakan format berikut:

  
StringToSign = VERB + "\n" +  
  Content-Encoding + "\n"  
  Content-Language + "\n"  
  Content-Length + "\n"  
  Content-MD5 + "\n"  
  Content-Type + "\n" +  
  Date + "\n" +  
  If-Modified-Since + "\n"  
  If-Match + "\n"  
  If-None-Match + "\n"  
  If-Unmodified-Since + "\n"  
  Range + "\n"  
  CanonicalizedHeaders +   
  CanonicalizedResource;  

Contoh berikut menunjukkan string tanda tangan untuk permintaan ke Mencantumkan pekerjaan di akun dengan batas waktu 20 detik. Ketika nilai header tidak ada, hanya karakter baris baru yang ditentukan.

GET\n\n\n\n\n\n\n\n\n\n\n\nocp-date:Tue, 29 Jul 2014 21:49:13 GMT\n /myaccount/jobs\napi-version:2014-01-01.1.0\ntimeout:20  

Memecah baris demi baris ini menunjukkan setiap bagian dari string yang sama:

  
GET\n /*HTTP Verb*/  
\n    /*Content-Encoding*/  
\n    /*Content-Language*/  
\n    /*Content-Length*/  
\n    /*Content-MD5*/  
\n    /*Content-Type*/  
\n    /*Date*/  
\n    /*If-Modified-Since */  
\n    /*If-Match */  
\n    /*If-None-Match */  
\n    /*If-Unmodified-Since*/  
\n    /* Range */  
ocp-date:Tue, 29 Jul 2014 21:49:13 GMT\n    /*CanonicalizedHeaders*/  
/myaccount/jobs\napi-version:2014-04-01.1.0\ntimeout:20    /*CanonicalizedResource*/  

Selanjutnya, kodekan string ini dengan menggunakan algoritma HMAC-SHA256 melalui string tanda tangan yang dikodekan UTF-8, buat header Otorisasi , dan tambahkan header ke permintaan. Contoh berikut menunjukkan header Otorisasi untuk operasi yang sama:

Authorization: SharedKey myaccount:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08=  

Membuat string header kanonis

Untuk membuat CanonicalizedHeaders bagian string tanda tangan, ikuti langkah-langkah berikut:

  1. Ambil semua header untuk sumber daya yang dimulai dengan ocp-, termasuk header tanggal ocp .

  2. Konversikan setiap nama header HTTP menjadi huruf kecil.

  3. Urutkan header secara leksikografis menurut nama header, dalam urutan naik. Setiap header mungkin hanya muncul sekali dalam string.

  4. Ganti spasi putih yang putus dengan spasi tunggal.

  5. Pangkas spasi kosong di sekitar titik dua di header.

  6. Tambahkan karakter baris baru ke setiap header kanonis dalam daftar yang dihasilkan. Buat CanonicalizedHeaders string dengan menggabungkan semua header dalam daftar ini menjadi satu string.

Membuat string sumber daya kanonis

Bagian CanonicalizedResource dari string tanda tangan mewakili sumber daya layanan Batch yang ditargetkan oleh permintaan. Bagian apa pun dari CanonicalizedResource string yang berasal dari URI sumber daya harus dikodekan persis seperti dalam URI.

Perlu diingat aturan berikut untuk membuat string sumber daya kanonis:

  • Hindari menggunakan karakter baris baru (\n) dalam nilai untuk parameter kueri. Jika harus digunakan, pastikan bahwa itu tidak memengaruhi format string sumber daya kanonis.

  • Hindari menggunakan koma dalam nilai parameter kueri.

Anda dapat membuat CanonicalizedResource string sebagai berikut:

  1. Dimulai dengan garis miring ("/"), diikuti dengan nama akun yang memiliki sumber daya yang diakses.

  2. Tambahkan jalur URI yang dikodekan sumber daya, tanpa parameter kueri apa pun.

  3. Ambil semua parameter kueri pada URI sumber daya, termasuk parameter versi api .

  4. Konversikan semua nama parameter menjadi huruf kecil.

  5. Urutkan parameter kueri secara leksikografis menurut nama parameter, dalam urutan naik.

  6. URL-decode setiap nama dan nilai parameter kueri.

  7. Tambahkan setiap nama parameter kueri dan nilai ke string dalam format berikut, pastikan untuk menyertakan titik dua (:) antara nama dan nilai:

    parameter-name:parameter-value  
    
  8. Jika parameter kueri memiliki lebih dari satu nilai, urutkan semua nilai secara leksikografis, lalu sertakan dalam daftar yang dipisahkan koma:

    parameter-name:parameter-value-1,parameter-value-2,parameter-value-n  
    
  9. Tambahkan karakter baris baru (\n) setelah setiap pasangan nama-nilai.

Mengodekan Tanda Tangan

Untuk mengodekan tanda tangan, panggil algoritma HMAC-SHA256 pada string tanda tangan yang dikodekan UTF-8 dan enkode hasilnya sebagai Base64. Gunakan format berikut (ditampilkan sebagai pseudocode):

Signature=Base64(HMAC-SHA256(UTF8(StringToSign)))  

Autentikasi melalui Microsoft Entra ID

Azure Batch mendukung autentikasi dengan Microsoft Entra ID, layanan manajemen identitas dan direktori berbasis cloud multi-penyewa Microsoft. Azure menggunakan Microsoft Entra ID untuk mengautentikasi pelanggan, administrator layanan, dan pengguna organisasinya sendiri.

Catatan

Autentikasi dengan Microsoft Entra ID bersifat opsional tetapi disarankan, diperlukan hanya jika akun Batch Anda disiapkan untuk mengalokasikan kumpulan dalam langganan pengguna. Opsi alokasi kumpulan tersedia saat Anda membuat akun Batch baru. Jika akun Anda disiapkan untuk mengalokasikan kumpulan dalam langganan yang dikelola oleh Batch, maka menggunakan Microsoft Entra ID untuk autentikasi bersifat opsional. Untuk informasi selengkapnya, lihat Batch – VNet dan Dukungan Gambar Kustom untuk Kumpulan Komputer Virtual.

Untuk informasi umum tentang mengautentikasi permintaan dengan Azure AD, lihat Referensi Azure REST API. Untuk menggunakan Azure AD dengan layanan Batch, Anda memerlukan titik akhir berikut.

Titik akhir "umum" titik akhir Azure AD adalah:

https://login.microsoftonline.com/common

Titik akhir sumber daya untuk layanan Batch adalah:

https://batch.core.windows.net/

Untuk informasi tambahan tentang mendaftarkan aplikasi Batch Anda dengan Microsoft Entra ID, lihat Mengautentikasi layanan Azure Batch dengan Microsoft Entra ID.