Создание подписи общего доступа в Python - Azure Api Rest Management - PullRequest
0 голосов
/ 10 июля 2020

извините за мой engli sh.

Я взаимодействую с Azure admin rest API, и я хочу программно создать токен SAS. В Azure документации объясняется для C # (я прилагаю код ниже), но мне нужно реализовать его в Python (я новичок), и я не могу получить кодировку данных и процесс подписания правильно, хотя я искал много информации и тестировал разными способами. Может ли кто-нибудь помочь мне «перевести» этот код ?. Большое спасибо.

c#

using System;   
using System.Text;   
using System.Globalization;   
using System.Security.Cryptography;   
  
public class Program   
{   
    public static void Main()   
    {   
        var id = "account-name";   
        var key = "account-key";   
        var expiry = DateTime.UtcNow.AddDays(10);   
        using (var encoder = new HMACSHA512(Encoding.UTF8.GetBytes(key)))   
        {   
            var dataToSign = id + "\n" + expiry.ToString("O", CultureInfo.InvariantCulture);   
            var hash = encoder.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));   
            var signature = Convert.ToBase64String(hash);   
            var encodedToken = string.Format("SharedAccessSignature uid={0}&ex={1:o}&sn={2}", id, expiry, signature);   
            Console.WriteLine(encodedToken);   
        }   
    }   
}  

1 Ответ

0 голосов
/ 10 июля 2020

Наконец-то я могу создать токен SAS. Вот код для подписи:

string_to_sign = '{}{}{}'.format(id_azure,'\n',expiry)

signature = (base64.b64encode(hmac.new(bytearray(key_azure, "utf-8") , bytearray(string_to_sign,"utf-8") , hashlib.sha512).digest())).decode("utf-8").replace("\n", "")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...