A Azure Batch felé irányuló kérelmek hitelesítése

A Batch szolgáltatásra irányuló minden kérést hitelesíteni kell. A Batch szolgáltatás támogatja a megosztott kulcson vagy Azure Active Directory (Azure AD) keresztüli hitelesítést.

Hitelesítés megosztott kulccsal

A hitelesített kérelmekhez két fejlécre van szükség: a Date vagy ocp-date fejlécre és az Engedélyezési fejlécre. A következő szakaszok ismertetik, hogyan hozhatja létre ezeket a fejléceket.

A dátumfejléc megadása

Minden hitelesített kérelemnek tartalmaznia kell a kérelem egyezményes világidő (UTC) időbélyegét. Az időbélyeget az ocp-date fejlécben vagy a szabványos HTTP/ HTTPS-dátum fejlécben adhatja meg. Ha a kérelemhez mindkét fejléc meg van adva, a rendszer az ocp-date értéket használja a kérés létrehozási idejeként.

A Batch szolgáltatásnak a létrehozása után 15 percen belül meg kell kapnia egy kérést. Ezzel a szolgáltatás védelmet nyújt a biztonsági támadások, például a visszajátszásos támadások ellen. Az ocp-date fejléc azért van megadva, mert egyes HTTP-ügyfélkódtárak és proxyk automatikusan beállítják a Date fejlécet, és nem ad lehetőséget az értékének olvasására, hogy belefoglalja a hitelesített kérelembe. Ha beállítja az ocp-date értéket, hozza létre az aláírást egy üres értékkel a Date fejléchez.

Adja meg az engedélyezési fejlécet

A hitelesített kérésnek tartalmaznia kell az Engedélyezés fejlécet. A kérés hitelesítéséhez alá kell írnia a kérést a kérést küldő fiók kulcsával, és a kérés részeként át kell adnia az aláírást.

Az Engedélyezési fejléc formátuma a következő:

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

SharedKey Az az engedélyezési séma neve, AccountName az erőforrást kérő fiók neve, valamint Signature egy kivonatalapú üzenethitelesítési kód (HMAC), amely a kérelemből jön létre, az SHA256 algoritmus használatával számítva, majd Base64-kódolással kódolva.

A következő szakaszok az Engedélyezési fejléc felépítését ismertetik.

Az aláírási sztring létrehozása

Az aláírási sztring létrehozásakor tartsa szem előtt a következőket:

  • A sztring VERB része a HTTP-parancs, például a GET vagy a POST, és nagybetűsnek kell lennie.

  • Az aláírási sztringben szereplő fejlécek csak egyszer jelenhetnek meg.

  • Az összes szabványos HTTP-fejléc értékét az aláírási formátumban megjelenített sorrendben, fejlécnevek nélkül kell szerepeltetni a sztringben. Ezek a fejlécek üresek lehetnek, ha nincsenek megadva a kérés részeként; ebben az esetben csak az új sorkaraktere szükséges.

  • Ha a művelet POST, a Tartalomtípus és a Tartalomhossz értékre kérelemfejlécként és az aláírási sztringben szereplő értékekként van szükség. A tartalomtípust application/json;odata=minimalmetadata értékre kell állítani.

  • Ha az ocp-date fejléc meg van adva, a Date fejlécre nincs szükség, egyszerűen adjon meg egy üres sort az aláírási sztring Date szakaszához. Ebben az esetben kövesse a canonicalized headers sztring összeállítása szakasz utasításait az ocp-date fejléc hozzáadásához.

  • Az aláírási sztringben minden megjelenített új sorkarakterek (\n) kötelezőek.

  • Az aláírási sztring részét képező sztringek CanonicalizedResource és sztringek CanonicalizedHeaders felépítéséről a jelen témakör későbbi, megfelelő szakaszaiban talál részletes információt.

A Batch szolgáltatásra irányuló kérés aláírási sztringjének kódolásához használja a következő formátumot:

  
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;  

Az alábbi példa egy aláírási sztringet mutat be egy 20 másodperces időtúllépéssel rendelkező fiók feladatainak listázására irányuló kérelemhez. Ha nem létezik fejlécérték, csak az új sor karakter van megadva.

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  

A sztring egyes részeit soronként lebontva:

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

Ezután kódolja ezt a sztringet a HMAC-SHA256 algoritmussal az UTF-8 kódolású aláírási sztringen keresztül, hozza létre az Engedélyezési fejlécet, és adja hozzá a fejlécet a kérelemhez. Az alábbi példa ugyanannak a műveletnek az Engedélyezési fejlécét mutatja be:

Authorization: SharedKey myaccount:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08=  

A canonicalized headers sztring létrehozása

Az aláírási sztring CanonicalizedHeaders részének létrehozásához kövesse az alábbi lépéseket:

  1. Kérje le az ocp-val kezdődő erőforrás összes fejlécét, beleértve az ocp-date fejlécet is.

  2. Alakítsa át az egyes HTTP-fejlécneveket kisbetűssé.

  3. Rendezze a fejléceket lexikálisan fejlécnév szerint növekvő sorrendbe. Minden fejléc csak egyszer jelenhet meg a sztringben.

  4. Cserélje le a törési térközt egyetlen szóközre.

  5. Vágja körül a kettőspont körüli térközt az élőfejben.

  6. Fűzze hozzá az új vonal karaktert az eredményként kapott lista minden egyes canonicalizált fejlécéhez. Hozza létre a CanonicalizedHeaders sztringet úgy, hogy a lista összes fejlécét egyetlen sztringgé fűzi össze.

A canonicalizált erőforrás-sztring létrehozása

Az CanonicalizedResource aláírási sztring része a Batch szolgáltatás azon erőforrását jelöli, amelyet a kérés megcélzott. Az erőforrás URI-jából származtatott sztring CanonicalizedResource bármely részét pontosan úgy kell kódolni, mint az URI-ban.

Tartsa szem előtt a következő szabályokat a canonicalized erőforrás-sztring összeállításához:

  • Ne használja az új sor karaktert (\n) a lekérdezési paraméterek értékeiben. Ha használni kell, győződjön meg arról, hogy nincs hatással a canonicalized erőforrás-sztring formátumára.

  • Ne használjon vesszőket a lekérdezési paraméterek értékeiben.

A sztringet a CanonicalizedResource következőképpen hozhatja létre:

  1. Perjellel ("/" kezdődik), majd annak a fióknak a neve, amely az elérni kívánt erőforrás tulajdonosa.

  2. Fűzze hozzá az erőforrás kódolt URI-útvonalát lekérdezési paraméterek nélkül.

  3. Kérje le az erőforrás URI-jának összes lekérdezési paraméterét, beleértve az API-version paramétert is.

  4. Alakítsa át az összes paraméternevet kisbetűssé.

  5. A lekérdezési paramétereket lexikálisan, paraméternév szerint rendezze növekvő sorrendbe.

  6. URL-dekódolja az egyes lekérdezési paraméterek nevét és értékét.

  7. Fűzze hozzá az egyes lekérdezési paraméterek nevét és értékét a sztringhez a következő formátumban, ügyelve arra, hogy tartalmazza a kettőspontot (:) a név és az érték között:

    parameter-name:parameter-value  
    
  8. Ha egy lekérdezési paraméter egynél több értékkel rendelkezik, rendezze az összes értéket lexikálisan, majd foglalja bele őket egy vesszővel tagolt listába:

    parameter-name:parameter-value-1,parameter-value-2,parameter-value-n  
    
  9. Minden név-érték pár után fűzze hozzá az új sorkarakteret (\n).

Az aláírás kódolása

Az aláírás kódolásához hívja meg a HMAC-SHA256 algoritmust az UTF-8 kódolású aláírási sztringen, és kódolja az eredményt Base64-ként. Használja a következő formátumot (pszeudokódként jelenik meg):

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

Hitelesítés Azure AD

Azure AD a Microsoft több-bérlős felhőalapú címtár- és identitáskezelési szolgáltatása. A Batch szolgáltatás támogatja a Azure AD-hitelesítést.

Megjegyzés

A Azure AD hitelesítésére csak akkor van szükség, ha a Batch-fiók úgy van beállítva, hogy készleteket foglaljon le egy felhasználói előfizetésben. A készletfoglalási lehetőség új Batch-fiók létrehozásakor érhető el. Ha a fiókja úgy van beállítva, hogy készleteket foglaljon le egy Batch által felügyelt előfizetésben, akkor a Azure AD használata nem kötelező. További információ: Batch – Virtuális hálózat és egyéni rendszerképek támogatása virtuálisgép-készletekhez.

A kérések Azure AD történő hitelesítésével kapcsolatos általános információkért tekintse meg az Azure REST API-referenciát. A Azure AD a Batch szolgáltatással való használatához a következő végpontokra lesz szüksége.

A Azure AD végpont "közös" végpontja a következő:

https://login.microsoftonline.com/common

A Batch szolgáltatás erőforrás-végpontja a következő:

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

A Batch-alkalmazás Azure AD való regisztrálásával kapcsolatos további információkért lásd: Hitelesítés Batch-megoldásokból az Active Directoryval.