Azure Rest API 中的授权令牌格式

Posted

技术标签:

【中文标题】Azure Rest API 中的授权令牌格式【英文标题】:Authorization token format in Azure RestAPI 【发布时间】:2021-10-20 06:20:11 【问题描述】:

我指的是这个文档

https://docs.microsoft.com/en-us/rest/api/storageservices/find-blobs-by-tags

在这个文档中,有一个 rest API https://myaccount.blob.core.windows.net?comp=blobs&where=

我想调用这个接口,但是需要授权令牌,那么授权令牌的格式是什么?

【问题讨论】:

HTH - docs.microsoft.com/en-us/rest/api/storageservices/…. @GauravMantri 我试过了,但它给了我错误“身份验证信息的格式不正确。检查授权令牌” 请编辑您的问题并分享您编写的代码。 @GauravMantri 因为它是 Rest API,所以我通过添加标题直接从 Postman 调用 在这种情况下,请分享一张截图。 【参考方案1】:

按照此步骤,您首先需要一个服务主体及其客户端 ID 和机密/证书(假设您使用 Azure AD 进行身份验证)。

然后,您需要在存储帐户上分配 RBAC 角色,如 LINK 中所述。对于筛选,您可以使用在存储帐户级别设置的存储 Blob 数据所有者角色。

您需要点击网址https://login.microsoftonline.com//oauth2/token 带有 POST 请求。包括 client_id、client_secret、grant_type 和资源,如附图所示。您将在响应中获得一个令牌。

创建您的表达式,如 HERE 所示。您的表达式需要进行 uri 编码。例如 &where=mytag = 'tesla' 将变为 mytag%3D%20%27tesla%27。您可以使用THIS在线解码器。

最后点击 gettags 端点 https://.blob.core.windows.net?comp=blobs&where=mytag%3D%20%27tesla%27。在标头中传递 Authorization = 'Bearer token'。还要通过 x-ms-version = 2019-12-12。见附图。

您的回复将是 xml 格式。

<?xml version="1.0" encoding="utf-8"?>
<EnumerationResults ServiceEndpoint="https://<account_name>.blob.core.windows.net/">
    <Where>mytag= &apos;tesla&apos;</Where>
    <Blobs>
        <Blob>
            <Name>Calling a rest API using python.txt</Name>
            <ContainerName>test</ContainerName>
            <TagValue>tesla</TagValue>
        </Blob>
    </Blobs>
    <NextMarker/>
</EnumerationResults>

【讨论】:

以上是关于Azure Rest API 中的授权令牌格式的主要内容,如果未能解决你的问题,请参考以下文章

REST API 调用中的数据工厂动态内容

带有 PHP 的 Azure 通知中心 REST API

请求令牌时如何在 Azure 存储 Blob 中为 REST 请求指定范围? [AZURE-BLOB][REST API]

检查散列的 REST API 令牌

Azure Mysql HTTP REST API 。获取 JSON 网络令牌

如何修复“访问令牌来自错误的受众或资源。”尝试使用 MSAL 令牌访问 Azure 的 REST api 时