Autentisera begäranden till Azure Batch

Varje begäran mot Batch-tjänsten måste autentiseras. Batch-tjänsten stöder autentisering antingen via delad nyckel eller Microsoft Entra ID.

Autentisering via delad nyckel

En autentiserad begäran kräver två rubriker: datum - eller ocp-datumrubriken och auktoriseringshuvudet . I följande avsnitt beskrivs hur du skapar dessa rubriker.

Ange datumrubriken

Alla autentiserade begäranden måste innehålla tidsstämpeln Coordinated Universal Time (UTC) för begäran. Du kan ange tidsstämpeln antingen i ocp-date-huvudet eller i standardrubriken HTTP/ HTTPS-datum . Om båda huvudena anges för begäran används värdet för ocp-date som skapandetid för begäran.

Batch-tjänsten måste ta emot en begäran inom 15 minuter från det att den skapades. Genom att göra detta skyddas tjänsten mot säkerhetsattacker, till exempel reprisattacker. Ocp-date-huvudet tillhandahålls eftersom vissa HTTP-klientbibliotek och proxyservrar automatiskt anger datumrubriken och inte ger dig möjlighet att läsa dess värde för att inkludera det i den autentiserade begäran. Om du anger ocp-date skapar du signaturen med ett tomt värde för datumrubriken .

Ange auktoriseringshuvudet

En autentiserad begäran måste innehålla auktoriseringshuvudet . Om du vill autentisera en begäran måste du signera begäran med nyckeln för det konto som gör begäran och skicka signaturen som en del av begäran.

Formatet för auktoriseringshuvudet är följande:

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

SharedKey är namnet på auktoriseringsschemat, AccountName är namnet på det konto som begär resursen och Signature är en Hash-baserad kod för meddelandeautentisering (HMAC) som skapats från begäran, som beräknas med hjälp av SHA256-algoritmen och sedan kodas med hjälp av Base64-kodning.

I följande avsnitt beskrivs hur du skapar auktoriseringshuvudet .

Skapa signatursträngen

Tänk på följande när du skapar signatursträngen:

  • VERB-delen av strängen är HTTP-verbet, till exempel GET eller POST, och måste vara versaler.

  • Varje rubrik som ingår i signatursträngen kan bara visas en gång.

  • Värdena för alla HTTP-standardrubriker måste inkluderas i strängen i den ordning som visas i signaturformatet, utan rubriknamnen. Dessa rubriker kan vara tomma om de inte anges som en del av begäran. I så fall krävs bara det nya radtecknet.

  • När verbet är POST krävs värdena Content-Type och Content-Length som begärandehuvuden och som värden i signatursträngen. Innehållstyp måste anges till application/json. odata=minimalmetadata.

  • Om ocp-date-huvudet anges krävs inte datumrubriken , utan anger bara en tom rad för datumdelen av signatursträngen. I det här fallet följer du anvisningarna i avsnittet Skapa strängen för kanoniska rubriker för att lägga till ocp-date-huvudet .

  • Alla nya radtecken (\n) som visas krävs i signatursträngen.

  • Detaljerad information om hur du skapar strängarna CanonicalizedHeaders och CanonicalizedResource som utgör en del av signatursträngen finns i lämpliga avsnitt senare i det här avsnittet.

Om du vill koda signatursträngen för en begäran mot Batch-tjänsten använder du följande format:

  
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;  

I följande exempel visas en signatursträng för en begäran om att Lista jobben i ett konto med en tidsgräns på 20 sekunder. När ett rubrikvärde inte finns anges endast det nya radtecknet.

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  

Om du delar upp detta rad för rad visas varje del av samma sträng:

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

Koda sedan den här strängen med HMAC-SHA256-algoritmen över den UTF-8-kodade signatursträngen, skapa auktoriseringshuvudet och lägg till huvudet i begäran. I följande exempel visas auktoriseringshuvudet för samma åtgärd:

Authorization: SharedKey myaccount:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08=  

Skapa den kanoniska sidhuvudsträngen

Så här skapar CanonicalizedHeaders du delen av signatursträngen:

  1. Hämta alla rubriker för resursen som börjar med ocp-, inklusive ocp-date-huvudet .

  2. Konvertera varje HTTP-huvudnamn till gemener.

  3. Sortera rubrikerna lexicographically efter rubriknamn, i stigande ordning. Varje rubrik kan bara visas en gång i strängen.

  4. Ersätt eventuellt blanksteg med ett enda blanksteg.

  5. Trimma eventuellt tomt utrymme runt kolonet i rubriken.

  6. Lägg till ett nytt radtecken i varje kanoniskt sidhuvud i den resulterande listan. Skapa strängen CanonicalizedHeaders genom att sammanfoga alla rubriker i den här listan till en enda sträng.

Skapa den kanoniska resurssträngen

Delen CanonicalizedResource av signatursträngen representerar resursen för Batch-tjänsten som begäran riktar sig mot. Alla delar av strängen CanonicalizedResource som härleds från resursens URI bör kodas exakt som i URI:n.

Tänk på följande regler för att skapa den kanoniska resurssträngen:

  • Undvik att använda det nya radtecknet (\n) i värden för frågeparametrar. Om den måste användas kontrollerar du att den inte påverkar formatet för den kanoniska resurssträngen.

  • Undvik att använda kommatecken i frågeparametervärden.

Du kan skapa strängen på CanonicalizedResource följande sätt:

  1. Från och med ett snedstreck ("/"), följt av namnet på det konto som äger resursen som används.

  2. Lägg till resursens kodade URI-sökväg utan några frågeparametrar.

  3. Hämta alla frågeparametrar på resurs-URI:n, inklusive parametern api-version .

  4. Konvertera alla parameternamn till gemener.

  5. Sortera frågeparametrarna lexicographically efter parameternamn, i stigande ordning.

  6. URL-avkoda varje frågeparameternamn och värde.

  7. Lägg till varje frågeparameternamn och värde i strängen i följande format och se till att inkludera kolonet (:) mellan namnet och värdet:

    parameter-name:parameter-value  
    
  8. Om en frågeparameter har fler än ett värde sorterar du alla värden lexicographically och tar sedan med dem i en kommaavgränsad lista:

    parameter-name:parameter-value-1,parameter-value-2,parameter-value-n  
    
  9. Lägg till ett nytt radtecken (\n) efter varje namn/värde-par.

Koda signaturen

Om du vill koda signaturen anropar du HMAC-SHA256-algoritmen på DEN UTF-8-kodade signatursträngen och kodar resultatet som Base64. Använd följande format (visas som pseudokod):

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

Autentisering via Microsoft Entra ID

Azure Batch stöder autentisering med Microsoft Entra ID, Microsofts molnbaserade katalog- och identitetshanteringstjänst för flera klientorganisationer. Azure använder Microsoft Entra ID för att autentisera sina egna kunder, tjänstadministratörer och organisationsanvändare.

Anteckning

Autentisering med Microsoft Entra ID är valfritt men rekommenderas. Det krävs bara om ditt Batch-konto har konfigurerats för att allokera pooler i en användarprenumeration. Alternativet poolallokering är tillgängligt när du skapar ett nytt Batch-konto. Om ditt konto har konfigurerats för att allokera pooler i en prenumeration som hanteras av Batch är det valfritt att använda Microsoft Entra ID för autentisering. Mer information finns i Batch – VNet och anpassat avbildningsstöd för virtuella datorpooler.

Allmän information om hur du autentiserar en begäran med Azure AD finns i Referens för Azure REST API. Om du vill använda Azure AD med Batch-tjänsten behöver du följande slutpunkter.

Den Azure AD slutpunktens "vanliga" slutpunkt är:

https://login.microsoftonline.com/common

Resursslutpunkten för Batch-tjänsten är:

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

Mer information om hur du registrerar batch-programmet med Microsoft Entra ID finns i Autentisera Azure Batch tjänster med Microsoft Entra ID.