【发布时间】:2020-07-10 11:26:05
【问题描述】:
对不起我的英语。
我正在与 Azure admin rest API 进行交互,并且我想以编程方式创建一个 SAS 令牌。在Azure documentation 中解释了 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);
}
}
}
【问题讨论】:
-
请看看这是否有帮助:stackoverflow.com/questions/62523166/…
-
谢谢,我以前看过这篇文章,但它对我不起作用,因为我没有任何 blob 容器
-
您希望创建一个帐户共享访问签名吗?请查看 SDK,您也会找到生成它们的方法。无需在 Python 中为 REST API 包装器编写代码。已经在 SDK 中完成了。
-
是的,我想创建一个共享访问签名,因为如果我在 Azure 门户中手动创建,令牌将在一个月内到期,我不想在整个月内都在代码中更改它。这个 SAS 是使用我在 Azure 门户中获得的 id 和主键创建的。感谢您提供信息,我将查看 Azure SDK 库,并尝试找到正确的方法
-
哦,还有一件事。我不确定您是否在问题中分享了您的真实帐户名称/密钥。如果是这种情况,请立即更改。
标签: python azure api token signature