[英]Cant get correct SAS token on Azure web app - Authentication Failed. Python
我正在调用generate_sas_token
API 生成一个 SAS 令牌,我将 append 添加到 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 以访问图像。 我已经稍微完成了 azure 存储的配置,但需要一些指导来了解导致这种情况的原因,因为错误消息没有提供太多信息。
建议后更新
我添加了开始时间并将其设为过去 15 分钟以防出现时间偏差。 我还添加了tag
作为良好措施的许可。
目的是确保所有参数/参数都正确且匹配,因为签名不匹配。
没有运气!
谢谢各位大侠!
长话:博士
确保您的文件名没有whitespace
,并检查您传递的所有file_name
格式是否正确。
问题是%20
也被称为file_name
中的whitespace
,我天真地 Azure 会处理它或提供警告或错误。
我在 Azure Blob 存储 (file_name) 中的文件名结构是这样的:
targets/my name/logo/Logo-H.jpg
这转化为:
targets/my%20name/logo/Logo-H.jpg
纯粹是我的错误和疏忽,但我认为 Azure 对此会有某种类型的捕获/处理。 我从 URL 中删除了空格并替换为-
导致..
targets/my-name/logo/Logo-H.jpg
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.