Aracılığıyla paylaş


Paylaşılan Anahtar ile yetkilendirme

İstek genel veya imzalı erişim için kullanılabilir hale getirilmiş bir blob veya kapsayıcı kaynağı için olmadığı sürece, depolama hizmetinde yapılan her istek yetkilendirilmelidir. bir isteği yetkilendirme seçeneği, bu makalede açıklanan Paylaşılan Anahtar'ı kullanmaktır.

Önemli

En iyi güvenlik için Microsoft mümkün olduğunca blob, kuyruk ve tablo verilerine karşı istekleri yetkilendirmek için yönetilen kimliklerle Microsoft Entra ID kullanılmasını önerir. Microsoft Entra ID ve yönetilen kimliklerle yetkilendirme, Paylaşılan Anahtar yetkilendirmesi yerine üstün güvenlik ve kullanım kolaylığı sağlar. Daha fazla bilgi edinmek için bkz. Microsoft Entra ID ile yetkilendirme. Yönetilen kimlikler hakkında daha fazla bilgi edinmek için bkz. Azure kaynakları için yönetilen kimlikler nedir?

Şirket içi uygulamalar gibi Azure dışında barındırılan kaynaklar için Azure Arc aracılığıyla yönetilen kimlikleri kullanabilirsiniz. Örneğin, Azure Arc özellikli sunucularda çalışan uygulamalar Azure hizmetlerine bağlanmak için yönetilen kimlikleri kullanabilir. Daha fazla bilgi edinmek için bkz. Azure Arc özellikli sunucularla Azure kaynaklarında kimlik doğrulaması.

Paylaşılan erişim imzalarının (SAS) kullanıldığı senaryolar için Microsoft, kullanıcı temsilcisi SAS kullanılmasını önerir. Kullanıcı temsilcisi SAS'sinin güvenliği hesap anahtarı yerine Microsoft Entra kimlik bilgileriyle sağlanır. Paylaşılan erişim imzaları hakkında bilgi edinmek için bkz. Kullanıcı temsilcisi SAS İçerik Oluşturucu.

Blob, Kuyruk, Tablo ve Dosya hizmetleri, sürüm 2009-09-19 ve üzeri (Blob, Kuyruk ve Tablo hizmeti için) ve sürüm 2014-02-14 ve üzeri (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 hizmetlerinde istekte bulunmak için Paylaşılan Anahtar yetkilendirme düzenini 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 yetkilendirmek için hizmetinizi güncelleştirmenizi gerektirir.

  • Tablo Hizmeti için Paylaşılan Anahtar. REST API kullanarak Tablo hizmetine yönelik isteklerde bulunmak için Paylaşılan Anahtar yetkilendirme düzenini kullanın. 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 hizmetlerinde istekte bulunmak için Shared Key Lite yetkilendirme düzenini kullanın.

    Blob ve Kuyruk hizmetlerinin 2009-09-19 ve sonraki sürümleri için Paylaşılan Anahtar Lite yetkilendirmesi, Blob ve Kuyruk hizmetlerinin önceki sürümlerinde Paylaşılan Anahtar için desteklenenle aynı imza dizesinin kullanılmasını destekler. Bu nedenle, imza dizenizi güncelleştirmeden Blob ve Kuyruk hizmetlerine yönelik isteklerde bulunmak için Paylaşılan Anahtar Lite'ı kullanabilirsiniz.

Yetkili istek için iki üst bilgi gerekir: Date veya x-ms-date üst bilgisi ve Authorization üst bilgi. Aşağıdaki bölümlerde bu üst bilgilerin nasıl derlediği açıklanmaktadır.

Önemli

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

Not

Kapsayıcı veya blob, bir kapsayıcının izinleri ayarlanarak genel erişim için kullanılabilir hale getirilebilir. Daha fazla bilgi için bkz. Azure Depolama Kaynaklarına Erişimi Yönetme. Kapsayıcı, blob, kuyruk veya tablo, paylaşılan erişim imzası aracılığıyla imzalı erişim için kullanılabilir hale getirilebilir; paylaşılan erişim imzası farklı bir mekanizma aracılığıyla yetkilendirilmiştir. Daha fazla ayrıntı için bkz . Paylaşılan erişim imzasıyla erişim temsilcisi atama.

Tarih üst bilgisini belirtme

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

Depolama hizmetleri, hizmete ulaşana kadar isteğin 15 dakikadan eski olmaması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

x-ms-date Bazı HTTP istemci kitaplıkları ve ara sunucuları üst bilgiyi otomatik olarak ayarladığından Date ve geliştiriciye yetkili isteğe eklemek için değerini okuma fırsatı vermediğinden üst bilgi sağlanır. ayarlarsanız x-ms-date, imzayı üst bilgi için Date boş bir değerle oluşturur.

Yetkilendirme üst bilgisini belirtme

Yetkili bir istek üst bilgiyi içermelidir Authorization . Bu üst bilgi dahil edilmezse, 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ı sağlanan kapsayıcı, blob, kuyruk veya tabloda başarılı olur.

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

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

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

burada SharedKey veya SharedKeyLite yetkilendirme düzeninin adıdır, AccountName kaynağı isteyen hesabın adıdır ve istekten oluşturulmuş ve Signature SHA256 algoritması kullanılarak hesaplanan ve ardından Base64 kodlaması kullanılarak kodlanmış karma tabanlı bir İleti Kimlik Doğrulama Kodudur (HMAC).

Not

Kaynağın genel olarak erişilebilir olması durumunda farklı bir hesabın altında bulunan bir kaynak isteyebilirsiniz.

Aşağıdaki bölümlerde üst bilginin nasıl derlediği Authorization açıklanmaktadır.

İmza dizesini oluşturma

İmza dizesini nasıl oluşturduğunuz, hangi hizmet ve sürümde yetkilendirildiğinize ve hangi yetkilendirme düzenini kullandığınıza bağlıdır. İmza dizesini oluştururken aşağıdakileri göz önünde bulundurun:

  • Dizenin FIIL bölümü, 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üntülenebilir. Herhangi bir üst bilgi yineleniyorsa, hizmet 400 (Hatalı İstek) durum kodunu döndürür.

  • Tüm standart HTTP üst bilgilerinin değerleri, üst bilgi adları olmadan imza biçiminde gösterilen sırayla dizeye eklenmelidir. bu üst bilgiler isteğin bir parçası olarak belirtilmiyorsa boş olabilir; bu durumda, yalnızca yeni satır karakteri gereklidir.

  • x-ms-date Üst bilgi belirtilirse, istekte belirtilip belirtilmediğinden bağımsız olarak üst bilgiyi yoksayabilir Date ve imza dizesinin bölümü için Date boş bir satır belirtebilirsiniz. Bu durumda, üst bilgiyi eklemek x-ms-date için Kurallı üst bilgiler dizesi oluşturma bölümündeki yönergeleri izleyin.

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

  • x-ms-date Üst bilgi belirtilmezse, üst bilgi adını dahil etmeden imza dizesinde üst bilgiyi belirtinDate.

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

  • İmza dizesi kurallı üst bilgileri ve kurallı hale getirilmiş kaynak dizelerini içerir. Bu dizelerin kurallı hale getirilerek Azure Depolama tarafından tanınan standart bir biçime dönüştürülmesi sağlanır. İmza dizesinin CanonicalizedHeaders bir bölümünü oluşturan ve CanonicalizedResource dizelerini oluşturma hakkında ayrıntılı bilgi için bu konunun devamında yer alan uygun bölümlere bakın.

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

Bir isteğin Paylaşılan Anahtar imza dizesini Blob veya Kuyruk hizmetinin 2009-09-19 sürümüne ve Dosya hizmetinin 2014-02-14 ve sonraki sürümlerine karşı 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ırsa 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 Blob Alma işlemi için imza dizesi gösterilmektedir. Üst bilgi değeri olmadığında, yalnızca yeni satır karakteri 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  

Bunu satır satır bölmek, aynı dizenin her bir bölümünü 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 Authorization kodlayıp üst bilgiyi oluşturun ve üst bilgiyi isteğe ekleyin. Aşağıdaki örnekte aynı işlemin üst bilgisi gösterilmektedir Authorization :

Authorization: SharedKey myaccount:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08=  

Paylaşılan Anahtar yetkilendirmesini Blob ve Kuyruk hizmetlerinin 2009-09-19 ve sonraki sürümleriyle kullanmak için kodunuzu bu genişletilmiş imza dizesini kullanacak şekilde 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 Authorization üst bilgilerinizi Paylaşılan Anahtar yerine Paylaşılan Anahtar Lite kullanacak şekilde değiştirebilirsiniz. Shared Key Lite için gereken imza biçimi, Blob ve Kuyruk hizmetlerinin 2009-09-19 öncesi sürümleri tarafından Paylaşılan Anahtar için gerekli olan imza biçimiyle aynıdır.

Önemli

Okuma erişimli coğrafi çoğaltmanın (RA-GRS) etkinleştirildiği bir depolama hesabında ikincil konuma erişiyorsanız yetkilendirme üst bilgisine atamayı eklemeyin -secondary . Yetkilendirme amacıyla, hesap adı her zaman ikincil erişim için bile 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ırsa Content-Length öğesinin Content-LengthStringToSign bölümünü olarak 0ayarlayın. Normalde bu boş bir dize olur.

Örneğin, aşağıdaki istek için üst bilginin değeri Content-Length sıfır olduğunda bile içinde yer StringToSign alır.

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

StringToSign aş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'e kadar olan sürümlerde ise , StringToSign için Content-Lengthboş bir dize içermelidir:

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 isteği yapmak için REST API kullanıyorsa Tablo hizmetinde yapılan bir isteği yetkilendirmek için Paylaşılan Anahtar yetkilendirmesini kullanmanız gerekir. Tablo hizmetine karşı Paylaşılan Anahtar için imza dizesinin biçimi tüm sürümler için aynıdır.

Tablo hizmetine yönelik bir isteğin Paylaşılan Anahtar imza dizesi, Blob veya Kuyruk hizmetine yönelik istekte dizenin bölümünü içermediğinden CanonicalizedHeaders biraz farklıdır. Ayrıca, Date istek üst bilgiyi belirlese x-ms-date bile bu durumda üst bilgi hiçbir zaman boş olmaz. İstek ayarlarsa x-ms-date, bu değer üst bilginin değeri Date için de kullanılır.

REST API kullanılarak yapılan Tablo hizmetine yönelik bir isteğin imza dizesini kodlamak 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ının ve MaxDataServiceVersion üst bilgilerini içermesini DataServiceVersion gerektirir. Daha fazla bilgi için bkz. OData Veri Hizmeti Sürüm Üst Bilgilerini Ayarlama .

Blob, Kuyruk ve Dosya hizmetleri (Paylaşılan Key Lite yetkilendirmesi)

Blob ve Kuyruk hizmetlerinin 2009-09-19 sürümü ve üstü ile Dosya hizmetlerinin 2014-02-14 ve sonraki sürümlerine karşı yapılan bir isteği yetkilendirmek için Paylaşılan Anahtar Lite yetkilendirmesini kullanabilirsiniz.

Shared Key Lite için imza dizesi, Blob ve Kuyruk hizmetlerinin 2009-09-19 öncesi 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ünde en az sayıda değişiklikle geçirmek isterseniz, imza dizesinin kendisini değiştirmeden kodunuzu Paylaşılan Anahtar Lite kullanacak şekilde değiştirebilirsiniz. Shared Key Lite'ı kullanarak, 2009-09-19 ve sonraki bir sürümle Paylaşılan Anahtar kullanarak sağlanan gelişmiş güvenlik işlevselliğini elde etmeyebilirsiniz.

Bir isteğin imza dizesini Blob veya Kuyruk hizmetine karşı 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 imza dizesi gösterilmektedir. Content-MD5 üst bilgi satırının boş olduğunu unutmayın. 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 Authorization kodlayıp üst bilgiyi oluşturun ve üst bilgiyi isteğe ekleyin. Aşağıdaki örnekte aynı işlemin üst bilgisi gösterilmektedir Authorization :

Authorization: SharedKeyLite myaccount:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08=  

Tablo hizmeti (Shared Key Lite yetkilendirmesi)

Table hizmetinin herhangi bir sürümünde yapılan bir isteği yetkilendirmek için Shared Key Lite yetkilendirmesini 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, İçerik Oluşturucu Tablosu işlemi için imza dizesi gösterilmektedir.

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

Ardından, HMAC-SHA256 algoritmasını kullanarak bu dizeyi Authorization kodlayın, üst bilgiyi oluşturun ve ardından üst bilgiyi isteğe ekleyin. Aşağıdaki örnekte aynı işlemin üst bilgisi gösterilmektedir Authorization :

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

Kurallı hale getirilmiş üst bilgi dizesini oluşturma

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

  1. üst bilgisi dahil olmak üzere ile x-ms-başlayan kaynağın x-ms-date tüm üst bilgilerini alın.

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

  3. Üst bilgileri sözcük temelli olarak üst bilgi adına göre artan düzende sıralayın. Her üst bilgi dizede yalnızca bir kez görünebilir.

    Not

    Sözcükbilimsel sıralama her zaman geleneksel alfabetik sıralamayla aynı olmayabilir.

  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 beslemesi (CRLF), boşluklar ve sekmeleri içerir. Ayrıntılar için bkz. RFC 2616, bölüm 4.2 . Tırnak içine alınmış bir dizenin içindeki boşluğu değiştirmeyin.

  1. Üst bilgideki iki nokta üst üste etrafındaki boşlukları kırpın.

  2. Son olarak, sonuçta elde edilen listedeki kurallı üst bilgilerin her birine yeni satır karakteri ekleyin. CanonicalizedHeaders Bu listedeki tüm üst bilgileri tek bir dizede birleştirerek dizeyi oluşturun.

Aşağıda kurallı bir üst bilgi dizesi örneği gösterilmektedir:

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 dizesinden boş değerler içeren üst bilgiler atlandı. Bunlar artık CanonicalizedHeaders içinde sonlandırıcı yeni satırla iki nokta üst üste karakteri takip edilerek temsil edilir.

Kurallı hale getirilmiş kaynak dizesini oluşturma

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

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

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

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

Eriştiğiniz kaynağın URI'sini oluşturma konusunda yardım için aşağıdaki konulardan birine bakın:

Önemli

Depolama hesabınız okuma erişimli coğrafi çoğaltma (RA-GRS) ile çoğaltıldıysa ve ikincil konumdaki bir kaynağa erişiyorsanız, dizeye atamayı –secondary eklemeyin CanonicalizedResource . Dize URI'sinde CanonicalizedResource kullanılan kaynak URI'sinin birincil konumdaki kaynağın URI'si olması gerekir.

Not

Depolama öykünücüsü için yetki verirseniz, hesap adı dizede CanonicalizedResource iki kez görünür. Bu beklenen bir durumdur. Azure depolama hizmetlerinde yetkilendiriliyorsanız, hesap adı dizede CanonicalizedResource yalnızca bir kez görünür.

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

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

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

  2. Herhangi bir sorgu parametresi olmadan kaynağın kodlanmış URI yolunu ekleyin.

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

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

  5. Sorgu parametrelerini sözcük temelli olarak parametre adına göre artan düzende sıralayın.

  6. Her sorgu parametresinin adını ve değerini URL ile kod çözme.

  7. Her ad-değer çifti önüne bir yeni satır karakteri (\n) ekleyin.

  8. Her sorgu parametresinin adını ve değerini dizeye aşağıdaki biçimde ekleyin ve adla değer arasında iki nokta üst üste (:)) eklediğinizden emin olun:

    parameter-name:parameter-value

  9. Sorgu parametresinin birden fazla değeri varsa, tüm değerleri sözcük temelli olarak sıralayın ve bunları virgülle ayrılmış bir listeye ekleyin:

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

Kurallı hale getirilmiş kaynak dizesini oluşturmak için aşağıdaki kuralları göz önünde bulundurun:

  • Sorgu parametreleri için değerlerde yeni satır karakterini (\n) kullanmaktan kaçının. Kullanılması gerekiyorsa, kurallı hale getirilmiş kaynak dizesinin biçimini etkilemediğinden emin olun.

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

Belirli bir istek URI'sinden oluşturulaabildiği için imza dizesinin bölümünü gösteren CanonicalizedResource bazı örnekler aşağıda 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 üzeri 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 Lite'ı ve Blob ve Kuyruk hizmetlerinin 2009-09-19 ve sonraki sürümleri ile Dosya hizmetinin 2014-02-14 ve sonraki sürümleri için Paylaşılan Anahtar Lite'ı destekler. Bu biçim, depolama hizmetlerinin önceki sürümlerinde kullanılan biçimle aynıdır. Dizeyi CanonicalizedResource şu biçimde oluşturun:

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

  2. Kaynağın kodlanmış URI yolunu ekleme. İstek URI'si kaynağın bir bileşenini ele alırsa, uygun sorgu dizesini ekleyin. Sorgu dizesi soru işaretini ve parametresini comp içermelidir (örneğin, ?comp=metadata). Sorgu dizesine başka parametre eklenmemelidir.

İmzayı kodlama

İmzayı kodlamak için UTF-8 kodlu imza dizesinde HMAC-SHA256 algoritmasını çağırın ve sonucu Base64 olarak kodlayın. Depolama hesabı anahtarınızın kodunu Base64 ile çözmeniz gerektiğini de unutmayın. 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.