Paylaşılan Anahtar ile yetkilendirme

Bir depolama hizmetine yapılan her isteğin, istek genel veya imzalı erişim için kullanılabilir olan bir blob veya kapsayıcı kaynağına yönelik olmadığı sürece yetkilendirilmiş olması gerekir. bir isteği yetkilendirmek için bir seçenek, bu makalede açıklanan Paylaşılan Anahtar kullanmaktır.

İpucu

Azure Depolama, depolama kaynaklarına Azure Active Directory üzerinde daha fazla denetim için Azure Active Directory tümleştirmeyi destekler. Azure AD tümleştirmesi Blob ve Kuyruk hizmetleri için de kullanılabilir. Azure AD kimlik yönetimi sağladığı için, Paylaşılan Anahtar ile olduğu gibi hesap erişim anahtarlarınızı uygulamalarınıza depolamadan depolama kaynaklarına erişimi yetkilendirebilirsiniz. Daha fazla bilgi için bkz. Azure Active Directory.

Blob, Kuyruk, Tablo ve Dosya hizmetleri, 2009-09-19 ve sonraki sürümler (Blob, Kuyruk ve Tablo hizmeti için) ve sürüm 2014-02-14 ve sonraki sürümler (Dosya hizmeti için) için aşağıdaki Paylaşılan Anahtar yetkilendirme düzenlerini destekler:

  • Blob, Kuyruk ve Dosya Hizmetleri için Paylaşılan Anahtar. Blob, Kuyruk ve Dosya hizmetlerine yönelik istekler yapmak için Paylaşılan Anahtar yetkilendirme şemasını kullanın. 2009-09-19 ve sonraki sürümlerde Paylaşılan Anahtar yetkilendirmesi, gelişmiş güvenlik için genişletilmiş imza dizesini destekler ve bu genişletilmiş imzayı kullanarak hizmetinizi yetkilendirmek için güncelleştirmenizi gerektirir.

  • Tablo Hizmeti için Paylaşılan Anahtar. Paylaşılan Anahtar yetkilendirme şemasını kullanarak Tablo hizmetine istekte REST API. 2009-09-19 ve sonraki sürümlerde Tablo hizmeti için Paylaşılan Anahtar yetkilendirmesi, Tablo hizmetinin önceki sürümlerindekiyle aynı imza dizesini kullanır.

  • Paylaşılan Key Lite. Blob, Kuyruk, Tablo ve Dosya hizmetleriyle ilgili istekler yapmak için Paylaşılan AnahtarLı Hafif yetkilendirme şemasını kullanın.

    Blob ve Kuyruk hizmetlerinin 2009-09-19 ve sonraki sürümleri için Paylaşılan Anahtar Temel yetkilendirmesi, Blob ve Kuyruk hizmetlerinin önceki sürümlerinde paylaşılan anahtar için desteklenene benzer bir imza dizesi kullanmayı destekler. Bu nedenle, İmza dizenizi güncelleştirmeden Blob ve Kuyruk hizmetleriyle ilgili istekler yapmak için Shared Key Lite'ı kullanabilirsiniz.

Yetkili bir istek için iki üst bilgi gerekir: Date veya üst bilgisi ve üst x-ms-date Authorization bilgisi. Aşağıdaki bölümlerde bu üst bilgileri oluşturma adımları açıklanmaktadır.

Önemli

Azure Depolama hem HTTP hem de HTTPS'yi destekler, ancak HTTPS kullanılması kesinlikle önerilir.

Not

Kapsayıcı veya blob, kapsayıcının izinleri ayar tarafından genel erişim için kullanılabilir olabilir. Daha fazla bilgi için, bkz. Manage Access to Azure Depolama Resources. Paylaşılan erişim imzası aracılığıyla imzalanmış erişim için bir kapsayıcı, blob, kuyruk veya tablo kullanılabilir; Paylaşılan erişim imzası farklı bir mekanizma aracılığıyla yetkilendirilebilir. Daha fazla bilgi için bkz. Paylaşılan erişim imzası ile erişim yetkisi.

Tarih üst bilgisi belirtme

Tüm yetkili istekler, isteğin Eşgüdümlü Evrensel Saat (UTC) zaman damgasını içermesi gerekir. Zaman damgasını üst bilgide veya x-ms-date standart HTTP/HTTPS üst bilgisinde Date belirtebilirsiniz. İstekte her iki üst bilgi de belirtilirse, değeri x-ms-date isteğin oluşturma zamanı olarak kullanılır.

Depolama hizmetleri, hizmete ulaşana kadar isteğin 15 dakikadan eski olmasını sağlar. Bu, yeniden yürütme saldırıları da dahil olmak üzere belirli güvenlik saldırılarına karşı koruma sağlar. Bu denetim başarısız olduğunda sunucu 403 (Yasak) yanıt kodunu döndürür.

Not

Bazı HTTP istemci kitaplıkları ve aracıları üst bilgiyi otomatik olarak ayarlayana ve geliştiriciye yetkili i isteğine dahil etmek için değerini okuma fırsatı vermeylerinden dolayı üst x-ms-date Date bilgi sağlanır. olarak x-ms-date ayarlanırsa, imzayı üst bilgi için boş bir değerle Date oluşturun.

Yetkilendirme üst bilgisi belirtme

Yetkili bir istek üst bilgi Authorization içermeli. Bu üst bilgi dahil yoksa, istek anonimdir ve yalnızca genel erişim için işaretlenmiş bir kapsayıcıda veya blobda ya da temsilci erişimi için paylaşılan erişim imzasının sağlanmıştır olduğu bir kapsayıcıda, blobda, kuyrukta veya tabloda başarılı olabilir.

Bir isteği yetkilendirmek için isteği, isteği yapan hesabın anahtarıyla imzalamanız ve isteğin bir parçası olarak bu imzayı geçmeniz gerekir.

Üst bilgi biçimi Authorization aşağıdaki gibidir:

Authorization="[SharedKey|SharedKeyLite] <AccountName>:<Signature>"  

burada veya yetkilendirme şemasının adıdır, kaynağı istenen hesabın adıdır ve istekten oluşturulmuş ve SHA256 algoritması kullanılarak hesaplanan ve base64 kodlaması kullanılarak kodlanmış bir SharedKey SharedKeyLite Karma Tabanlı İleti Kimlik Doğrulama Kodu AccountName Signature (HMAC) olur.

Not

Farklı bir hesabın altında yer alan bir kaynağın genel erişime açık olması durumda istekte bulunan bir kaynak da olabilir.

Aşağıdaki bölümlerde üst bilgi oluşturma adımları Authorization açıklanmaktadır.

İmza dizesini oluşturma

İmza dizesini nasıl oluşturmak için yetki kullandığınız hizmete ve sürüme ve hangi yetkilendirme düzenini kullandığınıza bağlıdır. İmza dizesini oluşturmak için şunları unutmayın:

  • Dizenin FIIL kısmı GET veya PUT gibi HTTP fiilidir ve büyük harf olmalıdır.

  • Blob, Kuyruk ve Dosya hizmetleri için Paylaşılan Anahtar yetkilendirmesi için, imza dizesine dahil edilen her üst bilgi yalnızca bir kez görünebilir. Herhangi bir üst bilgi çoğaltılmışsa hizmet 400 (Hatalı İstek) durum kodunu döndürür.

  • Tüm standart HTTP üst bilgileri değerleri, üst bilgi adları olmadan, imza biçiminde gösterilen sırayla dizeye ek olmalıdır. İstek kapsamında belirtilmemişse bu üst bilgiler boş olabilir; Bu durumda yalnızca yeni satır karakteri gereklidir.

  • Üst bilgi belirtilirse, istekte belirtilmiş olup olmadığına bakılmaksızın üst bilgiyi yoksayabilirsiniz ve yalnızca imza dizesinin bölümü için boş bir x-ms-date Date satır Date belirtebilirsiniz. Bu durumda, üst bilgi eklemek için Kurallı üst bilgiler dizesi oluşturma bölümündeki yönergeleri x-ms-date izleyin.

    hem hem de belirtmek kabul x-ms-date Date edilebilir; bu durumda hizmet değerini x-ms-date kullanır.

  • Üst x-ms-date bilgi belirtilmezse, üst Date bilgi adını eklemeden imza dizesinde üst bilgi belirtin.

  • Gösterilen tüm yeni satır karakterleri (\n) imza dizesi içinde gereklidir.

  • İmza dizesi kurallı üst bilgileri ve kurallı kaynak dizelerini içerir. Bu dizeleri kurallı hale getirerek Azure tarafından tanınan standart bir biçime Depolama. İmza dizesinin bir parçası olan ve dizelerini oluşturma hakkında ayrıntılı bilgi için bu konunun CanonicalizedHeaders CanonicalizedResource ilerleyen kısımlarında yer alan uygun bölümlere bakın.

Blob, Kuyruk ve Dosya Hizmetleri (Paylaşılan Anahtar yetkilendirmesi)

Blob veya Kuyruk hizmeti'nin 2009-09-19 ve sonraki bir sürümüne ve Dosya hizmetinin 2014-02-14 ve sonraki bir sürümüne karşı istek için Paylaşılan Anahtar imza dizesini kodlamak için aşağıdaki biçimi kullanın:

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;  

Önemli

Geçerli sürümde, isteğin içerik uzunluğu sıfır ise Content-Length alanı boş bir dize olmalıdır. Sürüm 2014-02-14 ve önceki sürümlerde içerik uzunluğu sıfır olsa bile dahil edildi. Eski davranış hakkında daha fazla bilgi için aşağıya bakın.

Aşağıdaki örnekte Get Blob işlemi için bir imza dizesi yer alır. Üst bilgi değeri olmayan yeni satır karakteri yalnızca belirtilir.

GET\n\n\n\n\n\n\n\n\n\n\n\nx-ms-date:Fri, 26 Jun 2015 23:39:12 GMT\nx-ms-version:2015-02-21\n/myaccount/mycontainer\ncomp:metadata\nrestype:container\ntimeout:20  

Bu satırı satır satır bölümlere ayrılarak aynı dizenin her bir bölümü gösterir:

GET\n /*HTTP Verb*/  
\n    /*Content-Encoding*/  
\n    /*Content-Language*/  
\n    /*Content-Length (empty string when zero)*/  
\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*/  
x-ms-date:Fri, 26 Jun 2015 23:39:12 GMT\nx-ms-version:2015-02-21\n    /*CanonicalizedHeaders*/  
/myaccount /mycontainer\ncomp:metadata\nrestype:container\ntimeout:20    /*CanonicalizedResource*/  

Ardından, UTF-8 ile kodlanmış imza dizesi üzerinde HMAC-SHA256 algoritmasını kullanarak bu dizeyi kodlayabilir, üst bilgiyi oluşturun ve üst bilgisini i Authorization isteğine ekleyin. Aşağıdaki örnek aynı işlem Authorization için üst bilgi gösterir:

Authorization: SharedKey myaccount:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08=  

Blob ve Kuyruk hizmetlerinin 2009-09-19 ve sonraki bir sürümüyle Paylaşılan Anahtar yetkilendirmesini kullanmak için kodunuzu bu genişletilmiş imza dizesini kullanmak üzere güncelleştirmeniz gerekir.

Kodunuzu Mümkün olan en az değişiklikle Blob ve Kuyruk hizmetlerinin 2009-09-19 veya sonraki bir sürümüne geçirmeyi tercih ederseniz, mevcut üst bilgileri paylaşılan anahtar yerine Shared Key Lite'ı kullanmak üzere Authorization değiştirebilirsiniz. Shared Key Lite için gereken imza biçimi, 2009-09-19 öncesinde Blob ve Kuyruk hizmetlerinin sürümleri tarafından Paylaşılan Anahtar için gerekli olanla aynıdır.

Önemli

Okuma erişimli coğrafi çoğaltma (RA-GRS) etkin bir depolama hesabında ikincil konuma erişıyorsanız, yetkilendirme üst bilgisine -secondary atamayı dahil edin. Yetkilendirme amacıyla hesap adı, ikincil erişim için bile her zaman birincil konumun adıdır.

Sürüm 2014-02-14 ve önceki sürümlerde Content-Length üst bilgisi

2014-02-14 veya önceki bir sürümü kullanırken sıfır ise Content-Length kısmını Content-Length olarak StringToSign 0 ayarlayın. Normalde bu boş bir dize olur.

Örneğin, aşağıdaki istekte üst bilgi değeri Content-Length sıfır olduğunda StringToSign bile değerine dahil edilir.

PUT http://myaccount/mycontainer?restype=container&timeout=30 HTTP/1.1  
x-ms-version: 2014-02-14  
x-ms-date: Fri, 26 Jun 2015 23:39:12 GMT  
Authorization: SharedKey myaccount:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08=  
Content-Length: 0

StringToSignaşağıdaki gibi oluşturulur:

Version 2014-02-14 and earlier:
PUT\n\n\n\n0\n\n\n\n\n\n\n\nx-ms-date:Fri, 26 Jun 2015 23:39:12 GMT\nx-ms-version:2014-02-14\n/myaccount/mycontainer\nrestype:container\ntimeout:30

2014-02-14 sonrası sürümlerde ise için StringToSign boş bir dize içermesi Content-Length gerekir:

Version 2015-02-21 and later:
PUT\n\n\n\n\n\n\n\n\n\n\n\nx-ms-date:Fri, 26 Jun 2015 23:39:12 GMT\nx-ms-version:2015-02-21\n/myaccount/mycontainer\nrestype:container\ntimeout:30

Tablo hizmeti (Paylaşılan Anahtar yetkilendirmesi)

Hizmetiniz istekte REST API kullanıyorsa Tablo hizmetine yapılan bir isteği yetkilendirmek için Paylaşılan Anahtar yetkilendirmesi kullansanız gerekir. Paylaşılan Anahtar için Tablo hizmetine yönelik imza dizesinin biçimi tüm sürümlerde aynıdır.

Tablo hizmetine yönelik bir isteğin Paylaşılan Anahtar imza dizesi, Blob veya Kuyruk hizmeti'a yapılan istekten biraz farklıdır ve dizenin kısmını CanonicalizedHeaders içermez. Buna ek Date olarak, istek üst bilgiyi ayarlasa bile bu durumda üst bilgi hiçbir zaman boş x-ms-date değildir. İstek tarafından x-ms-date ayarlanırsa, bu değer üst bilginin değeri için de Date kullanılır.

aşağıdaki biçimi kullanarak yapılan Tablo hizmetine yönelik bir isteğin imza dizesini REST API için aşağıdaki biçimi kullanın:

StringToSign = VERB + "\n" +
               Content-MD5 + "\n" +
               Content-Type + "\n" +  
               Date + "\n" +  
               CanonicalizedResource;  

Not

2009-09-19 sürümünden itibaren Tablo hizmeti, tüm REST çağrılarında ve üst DataServiceVersion bilgilerini MaxDataServiceVersion içermesini gerektirir. Daha fazla bilgi için bkz. OData Veri Hizmeti Sürüm Üst Bilgilerini Ayarlama.

Blob, Kuyruk ve Dosya hizmetleri (Paylaşılan AnahtarLık Yetkilendirmesi)

Blob ve Kuyruk hizmetlerinin 2009-09-19 ve sonraki bir sürümüne ve Dosya hizmetlerinin 2014-02-14 ve sonraki bir sürümüne karşı yapılan bir isteği yetkilendirmek için Shared Key Lite yetkilendirmesi kullanabilirsiniz.

Shared Key Lite imza dizesi, 2009-09-19 öncesinde Blob ve Kuyruk hizmetlerinin sürümlerinde Paylaşılan Anahtar yetkilendirmesi için gereken imza dizesiyle aynıdır. Bu nedenle kodunuzu Blob ve Kuyruk hizmetlerinin 2009-09-19 sürümüne en az sayıda değişiklikle geçirmek isterseniz, imza dizesinin kendisini değiştirmeden kodunuzu Shared Key Lite'ı kullanmak üzere değiştirebilirsiniz. Paylaşılan Anahtar Temel'i kullanarak, Paylaşılan Anahtar'ı 2009-09-19 ve sonraki bir sürümle kullanarak sağlanan gelişmiş güvenlik işlevselliği elde olmaz.

Blob veya Kuyruk hizmeti isteğine yönelik imza dizesini kodlamak için aşağıdaki biçimi kullanın:

StringToSign = VERB + "\n" +  
               Content-MD5 + "\n" +  
               Content-Type + "\n" +  
               Date + "\n" +  
               CanonicalizedHeaders +   
               CanonicalizedResource;  

Aşağıdaki örnekte Put Blob işlemi için bir imza dizesi yer alır. Content-MD5 üst bilgi satırı boştur. Dizede gösterilen üst bilgiler, yeni blob için özel meta veri değerlerini belirten ad-değer çiftleridir.

PUT\n\ntext/plain; charset=UTF-8\n\nx-ms-date:Sun, 20 Sep 2009 20:36:40 GMT\nx-ms-meta-m1:v1\nx-ms-meta-m2:v2\n/testaccount1/mycontainer/hello.txt  

Ardından, UTF-8 ile kodlanmış imza dizesi üzerinde HMAC-SHA256 algoritmasını kullanarak bu dizeyi kodlayabilir, üst bilgiyi oluşturun ve üst bilgisini i Authorization isteğine ekleyin. Aşağıdaki örnek aynı işlem Authorization için üst bilgi gösterir:

Authorization: SharedKeyLite myaccount:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08=  

Tablo hizmeti (Paylaşılan AnahtarLık Yetkilendirmesi)

Tablo hizmetinin herhangi bir sürümünde yapılan bir isteği yetkilendirmek için Paylaşılan AnahtarLık Yetkilendirmesi'ni kullanabilirsiniz.

Shared Key Lite kullanarak Tablo hizmetine yönelik bir isteğin imza dizesini kodlamak için aşağıdaki biçimi kullanın:

StringToSign = Date + "\n"
               CanonicalizedResource  

Aşağıdaki örnekte, Tablo Oluşturma işlemi için bir imza dizesi yer alır.

Sun, 11 Oct 2009 19:52:39 GMT\n/testaccount1/Tables  

Ardından, HMAC-SHA256 algoritmasını kullanarak bu dizeyi kodlayabilir, üst bilgisini oluşturun ve ardından üst Authorization bilgisini i isteğine ekleyin. Aşağıdaki örnek aynı işlem Authorization için üst bilgi gösterir:

Authorization: SharedKeyLite testaccount1:uay+rilMVayH/SVI8X+a3fL8k/NxCnIePdyZSkqvydM=  

Kurallı üst bilgiler dizesini oluşturma

İmza CanonicalizedHeaders dizesinin bölümünü oluşturmak için şu adımları izleyin:

  1. ile başlayan kaynak için üst bilgi dahil olmak üzere x-ms- tüm üst bilgileri x-ms-date alın.

  2. Her HTTP üst bilgisi adını küçük harfe dönüştürebilirsiniz.

  3. Üst bilgileri sözlüksel olarak üst bilgi adına göre artan düzende sırala. Her üst bilgi dizede yalnızca bir kez görünebilir.

    Not

    Lexicographical sıralama her zaman geleneksel alfabetik sıralama ile çakışmay olabilir.

  4. Üst bilgi değerindeki herhangi bir doğrusal boşluğu tek bir boşlukla değiştirin.

Doğrusal boşluk satır başı/satır besleme (CRLF), boşluklar ve sekmeler içerir. Ayrıntılar için bkz. RFC 2616, bölüm 4.2. Tırnak içine alınan dize içindeki boşluklardan birini değiştirme.

  1. Üst bilgide iki noktanın çevresindeki boşluğu kırparak.

  2. Son olarak, elde edilen listede her kurallı üst bilgiye yeni bir satır karakteri ekleyin. Bu CanonicalizedHeaders listede yer alan tüm üst bilgileri tek bir dizede bir arada kullanarak dizeyi oluşturun.

Aşağıda kurallı üst bilgiler dizesinin bir örneği yer alır:

x-ms-date:Sat, 21 Feb 2015 00:48:38 GMT\nx-ms-version:2014-02-14\n

Not

Hizmet sürümü 2016-05-31'den önce, imza dizesinde boş değerlere sahip üst bilgiler atlandı. Bunlar artık canonicalizedHeaders içinde iki nokta üst üste karakterinin hemen ardından sonlandırıcı yeni satırla birlikte temsil edildi.

Kurallı kaynak dizesini oluşturma

İmza CanonicalizedResource dizesinin bölümü, istek tarafından hedeflenen depolama hizmetleri kaynağını temsil eder. Dizenin kaynağın URI'sinden türetilen herhangi bir CanonicalizedResource kısmı, URI'de olduğu gibi tam olarak kodlanmış olmalıdır.

Dize için desteklenen iki biçim CanonicalizedResource vardır:

  • Blob ve Kuyruk hizmetlerinin 2009-09-19 ve sonraki bir sürümü ve Dosya hizmetinin 2014-02-14 ve sonraki bir sürümü için Paylaşılan Anahtar yetkilendirmeyi destekleyen bir biçim.

  • Tablo hizmetinin tüm sürümleri için Paylaşılan Anahtar ve Paylaşılan Anahtar Temel'i, Blob ve Kuyruk hizmetlerinin 2009-09-19 ve sonraki sürümleri için Paylaşılan Anahtar Temel'i destekleyen bir biçim. Bu biçim, depolama hizmetlerinin önceki sürümleriyle kullanılan biçimle aynıdır.

Erişmekte olduğunu kaynağın URI'sini oluşturma yardımı için aşağıdaki konulardan birini bakın:

Önemli

Depolama hesabınız okuma erişimli coğrafi çoğaltma (RA-GRS) ile çoğaltılırsa ve ikincil konumdaki bir kaynağa erişıyorsanız, dizeye atamayı –secondary CanonicalizedResource dahil etmek mümkün değildir. Dize URI'sinde CanonicalizedResource kullanılan kaynak URI'si, birincil konumdaki kaynağın URI'si olmalıdır.

Not

Depolama öykünücüsünü yetkiye alırsanız, hesap adı dizede iki kez CanonicalizedResource görünür. Bu beklenen bir durumdur. Azure depolama hizmetleri için yetkiniz varsa, hesap adı dizede yalnızca bir kez CanonicalizedResource görünür.

2009-09-19 ve sonrası için Paylaşılan Anahtar biçimi

Bu biçim, Blob ve Kuyruk hizmetlerinin 2009-09-19 ve sonraki sürümü ve Dosya hizmetlerinin 2014-02-14 sürümü ve sonrası için Paylaşılan Anahtar yetkilendirmeyi destekler. Dizeyi CanonicalizedResource şu biçimde oluşturun:

  1. Boş bir dize ("" ile başilerek, eğik çizgi (/) ve ardından erişilen kaynağın sahibi olan hesabın adını ekler.

  2. Sorgu parametresi olmadan kaynağın kodlanmış URI yolunu ekleme.

  3. Varsa parametresi de dahil olmak üzere kaynak URI'si comp üzerinde tüm sorgu parametrelerini alın.

  4. Tüm parametre adlarını küçük harfe dönüştür.

  5. Sorgu parametrelerini sözlüksel olarak parametre adına göre artan düzende sırala.

  6. Her sorgu parametresinin adı ve değerinin URL kodunu çözme.

  7. Her bir ad-değer çiftinin \n bir yeni satır karakteri (\n) içerir.

  8. Her sorgu parametresi adını ve değerini dizeye aşağıdaki biçimde ekleyen iki nokta üst üste (:) ad ve değer arasında:

    parameter-name:parameter-value

  9. Bir sorgu parametresinin birden fazla değeri varsa, tüm değerleri sözlüksel olarak sırala ve virgülle ayrılmış bir listeye ekle:

    parameter-name:parameter-value-1,parameter-value-2,parameter-value-n

Kurallı kaynak dizesini oluşturmak için aşağıdaki kuralları unutmayın:

  • Sorgu parametreleri için değerlerde yeni satır karakterini (\n) kullanmaktan kaçının. Kullanılacaksa kurallı kaynak dizesinin biçimini etkilemey olduğundan emin olun.

  • Sorgu parametresi değerlerde virgül kullanmaktan kaçının.

Aşağıda, verilen bir istek URI'sinde oluşturulmuş olmasıyla imza CanonicalizedResource dizesinin bölümünü içeren bazı örnekler verilmiştir:

Get Container Metadata  
   GET http://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=metadata
CanonicalizedResource:  
    /myaccount/mycontainer\ncomp:metadata\nrestype:container  
  
List Blobs operation:  
    GET http://myaccount.blob.core.windows.net/container?restype=container&comp=list&include=snapshots&include=metadata&include=uncommittedblobs  
CanonicalizedResource:  
    /myaccount/mycontainer\ncomp:list\ninclude:metadata,snapshots,uncommittedblobs\nrestype:container  
  
Get Blob operation against a resource in the secondary location:  
   GET https://myaccount-secondary.blob.core.windows.net/mycontainer/myblob  
CanonicalizedResource:  
    /myaccount/mycontainer/myblob

2009-09-19 ve sonrası için Paylaşılan Key Lite ve Tablo hizmeti biçimi

Bu biçim Tablo hizmetinin tüm sürümleri için Paylaşılan Anahtar ve Paylaşılan Anahtar Temel'i, Blob ve Kuyruk hizmetlerinin 2009-09-19 ve sonraki sürümleri ve Dosya hizmetinin 2014-02-14 ve sonraki sürümleri için Paylaşılan Anahtar Temel'i destekler. Bu biçim, depolama hizmetlerinin önceki sürümleriyle kullanılan biçimle aynıdır. Dizeyi CanonicalizedResource şu biçimde oluşturun:

  1. Boş bir dize ("" ile başilerek, eğik çizgi (/) ve ardından erişilen kaynağın sahibi olan hesabın adını ekler.

  2. Kaynağın kodlanmış URI yolunu ekleme. İstek URI'si kaynağın bir bileşenini adreslese uygun sorgu dizesini ekler. Sorgu dizesi soru işaretini ve parametresini comp (örneğin, ) ?comp=metadata içermeli. Sorgu dizesine başka parametre dahil edilecek bir parametre yoktur.

İmzayı kodlama

İmzayı kodlamak için UTF-8 kodlamalı imza dizesinde HMAC-SHA256 algoritmasını çağırın ve sonucu Base64 olarak kodlar. Depolama hesabı anahtarınızı Base64 kodunu çözmeniz de gerekir. Aşağıdaki biçimi kullanın (sahte kod olarak gösterilir):

Signature=Base64(HMAC-SHA256(UTF8(StringToSign), Base64.decode(<your_azure_storage_account_shared_key>)))  

Ayrıca bkz.