繁体   English   中英

使用 Azure AD 和 Azure Storage PUT API 时出现无效的身份验证信息错误

Invalid authentication info error when using Azure AD and Azure Storage PUT API

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试使用 Azure Active Directory (AAD) 身份验证和 REST API 将文件上传到 Azure 存储中的容器。 我无法弄清楚下面的工作流程中缺少什么,但它总是失败。

这个怎么运作:

  1. 在 AAD 中创建了服务主体 (SP)
  2. 为此 SP 生成了client_secret
  3. 在存储帐户级别添加到 SP 的存储帐户的Contributor角色
    • 附带问题: Storage Blob Data Contributor角色是否可以缩小到容器级别,而不是在帐户级别授予?
  4. 示例身份验证请求:
    • 方法: GET
    • URL: https://login.microsoftonline.com/<my_tenant>/oauth2/v2.0/token
    • 正文: x-www-form-urlencoded
      • grant_type : client_credentials
      • client_id : <client_id>
      • scope : https://graph.microsoft.com/.default
      • client_secret : <client_secret>
    • 标题:
      • content-typeapplication/x-www-form-urlencoded
  5. 样本授权。 回复:
    • 状态:200
    • 身体:
{
    "token_type": "Bearer",
    "expires_in": 3599,
    "ext_expires_in": 3599,
    "access_token": "<auth_token>"
}
  1. 到目前为止没有问题。 然后使用此请求中的<auth_token>发送 PUT 请求以将文件上传到 Azure 存储容器
  2. 示例上传请求:
    • 方法: PUT
    • URL: https://<stg-account-name>.blob.core.windows.net/<container-name>/<file-name>.json
    • 正文: binary
      • <file-name>.json
    • 标题:
      • x-ms-blob-type : BlockBlob
      • x-ms-version2020-04-08
        • AAD 身份验证需要(至少根据此文档
      • AuthenticationBearer <auth_token>
  3. 示例上传响应:
    • 状态:401
    • 身体:
<?xml version="1.0" encoding="utf-8"?>
<Error>
    <Code>InvalidAuthenticationInfo</Code>
    <Message>Server failed to authenticate the request. Please refer to the information in the www-authenticate header.
RequestId:<guid>
Time:2022-09-26T18:29:27.4477615Z</Message>
    <AuthenticationErrorDetail>Signature validation failed. Signature verification failed.</AuthenticationErrorDetail>
</Error>

试过:

  • 从身份验证 header 中删除Bearer关键字
    • 结果状态 403
  • x-ms-version header 从2017-11-092020-04-08
    • 没变

问题

  1. 这里缺少什么?
  2. 这在文档中的哪个位置?

编辑1

  1. 这里缺少什么?
    • 谢谢@gaurav-mantri,您的建议有效!
    • 我在 C 请求scope header 更改为https://storage.azure.com/.default默认值。
    • 随后的上传请求以状态 201 响应。
  2. 你能帮我找到文档中引用的这个吗?
    • 在这些资源中找不到术语https://storage.azure.com/.default
    • 搜索词Azure OAUTH scopes似乎在结果的第一页中没有显示任何内容
问题暂未有回复.您可以查看右边的相关问题.
3 使用 MS Identity 平台(Azure AD 身份验证)时,如何在 ASP.Net MVC 中的任何操作之前对用户进行身份验证后从 Azure AD 访问信息

我创建了一个使用 Azure AD 身份验证的应用程序。 用户通过身份验证后,我想获取用户的唯一 ID 并获取要保存在会话中的组信息,以便可以在任何控制器操作中获取该组信息。 这样做的一个好地方是正确的 SignIn() 方法,但是由于缓存,此代码不会执行,并且用户可以访问默认页面。 那么,在用 ...

7 使用cf push时出现CloudFoundry错误:刷新身份验证令牌时出错。 身份验证请求失败:无效的身份验证令牌:无效的刷新令牌(已过期)

我正在使用CloudFoundry CLI,在执行cf push时出现以下错误: 刷新身份验证令牌时出错。 身份验证请求失败:无效的身份验证令牌:无效的刷新令牌(已过期) 我一直在成功使用cf push ,然后它停止了上面的错误。 ...

9 使用 Azure AD 身份验证和 Web App API 的多租户

我有一个在 Azure 云上运行的经典 3 层应用程序(数据库、API 和 UI)。 现在我想扩展这个应用程序并为不同的客户群启用它。 所以现在我在数据库中有与公司 A 相关的用户。 我使用 Azure AD 进行身份验证,一旦通过登录成功进行身份验证,用户就可以调用必要的 API。 我现在想将此 ...

10 使用 Azure AD 的 Angular SPA 身份验证

嗨,我正在研究 Angular SPA 和 Web API 核心。 我正在尝试实施身份验证和授权。 我现在做了如下。 为我的前端应用程序注册了一个应用程序,并添加了所需的重定向 uri 和修改的清单文件以启用隐式流。 还为其分配了一些角色。 为我的后端注册了一个应用程序。 我以 api/c ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM