我正在调用generate_sas_token
生成 SAS 令牌的 API,我将其附加到 url 的末尾以便能够访问它。我之前有它工作过,但后来我一直收到这个错误:
<Error> <Code> AuthenticationFailed </Code>
<Message>
Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:ae350ec9-c01e-0010-06ca-257999000000
Time:2022-02-19T19:55:49.7901043Z
</Message>
<AuthenticationErrorDetail>
Signature did not match. String to sign used was rt
2022-02-19T21:55:49Z/blob/storage/files/someimage.jpg
2020-10-02
b
添加了我的电话
def generate_sas_token(file_name, img_url):
pattern = r'\bhttps:\/\/lenstorage.blob.core.windows.net\/files\/\b'
file_name = re.sub(pattern,'', img_url)
AZURE_ACC_NAME = settings.AZURE_ACCOUNT_NAME
AZURE_PRIMARY_KEY = settings.AZURE_PRIMARY_KEY
AZURE_CONTAINER = settings.AZURE_CONTAINER
sas = generate_blob_sas(account_name=AZURE_ACC_NAME,
account_key=AZURE_PRIMARY_KEY,
container_name=AZURE_CONTAINER,
blob_name=file_name,
permission=BlobSasPermissions(read=True),
expiry=datetime.utcnow() + timedelta(hours=2))
sas_url ='https://'+AZURE_ACC_NAME+'.blob.core.windows.net/'+AZURE_CONTAINER+'/'+file_name+'?'+sas
return sas_url
经过几个小时的阅读,我做了以下事情:我确保两个资源都在同一个区域,并且两个服务器上的时间都相同。我检查了我所有的环境变量,它们都很好。我手动生成了一个令牌并将其附加到 url 以访问图像。我已经完成了天蓝色存储的配置,但需要一些指导来了解导致这种情况的原因,因为错误消息并没有提供太多信息。
建议后更新
我添加了开始时间并将其设置为过去 15 分钟,以防时间偏差。我还添加tag
了良好措施的许可。
目的是确保所有参数/参数都正确并匹配,因为签名不匹配。
没运气!
谢谢各位高手!