使用不记名令牌授权 Azure 请求?

Posted

技术标签:

【中文标题】使用不记名令牌授权 Azure 请求?【英文标题】:Authorize Azure Requests using Bearer toke? 【发布时间】:2021-08-02 23:48:44 【问题描述】:

是否可以使用授权令牌而不是订阅密钥向 Microsoft Azure OCR 发送请求?我在互联网上搜索了很多但一无所获,因此如果您能提供帮助,我将不胜感激。

【问题讨论】:

您想要实现什么样的请求/操作? 您说的是computer vision(Azure 认知服务)吗?您可以查看此文档以使用 Azure AD 进行身份验证:docs.microsoft.com/en-us/azure/cognitive-services/… 我想在客户端使用 Bearer Token 发送 OCR 请求。 我想制作一个应用程序,该应用程序具有使用户能够发送图像并识别图像中的文本的功能。使用订阅密钥验证请求很容易,但我认为这将是一个大问题,因为用户将能够找到并使用我的订阅密钥。正如这里提到的,authToken 不能用于计算机视觉docs.microsoft.com/en-us/azure/cognitive-services/…。我的情况有什么解决办法吗? 【参考方案1】:

基本上,您可以遵循以下工作流程:

    用户向您的应用发送访问令牌请求。 您的应用程序检查用户的权限(您应该自己实现该过程),如果通过,您的应用程序使用订阅密钥通过Authenticate with Azure Active Directory 为用户获取访问令牌和 将此令牌回复给用户。 用户使用此令牌从客户端调用 OCR 服务。

如文档所示,您应该在 Azure AD 中创建一个新的服务主体,然后转到 Azure 门户=>您的 Azure 认知服务 => 访问控制以将认知服务用户角色添加到新创建的 SP:

以便它可以通过以下请求从 Azure AD 请求此服务的访问令牌:

通过使用此访问令牌,我们将能够调用视觉 ocr 服务:

本例中的端点:

【讨论】:

是的,我正在为翻译和语音服务做这件事,它工作正常,但它不适用于视觉 api,这可能是因为 Azure 还不支持视觉访问令牌api 在他们的文档docs.microsoft.com/en-us/azure/cognitive-services/… 中提到。你能举个例子解释一下吗? @ZyadOmer999,我很抱歉,我没有注意到这种方式不适用于视觉 API,我已经使用 Azure AD 的访问令牌更新了我的答案。 感谢斯坦利先生。但是你能告诉网址中的“stancogtest”是什么吗?我应该在哪里指定区域?我之所以问这个问题是因为我收到此错误“未经授权。访问令牌丢失、无效、受众不正确 (cognitiveservices.azure.com) 或已过期。” @ZyadOmer999,我很高兴:)“stancogtest”是我的认知服务名称,您可以在您的认知服务实例概述中找到端点(我已在我的答案中附加了捕获)。在这种情况下,您应该使用此端点,无需指定区域。 一切都清楚了。非常感谢你,你真的很有帮助。请再问一个问题,我想知道如果有人将令牌转换为人类可读的格式,例如 www.jwt.io,是否有可能获得令牌中的端点

以上是关于使用不记名令牌授权 Azure 请求?的主要内容,如果未能解决你的问题,请参考以下文章

邮递员上的授权类型不记名令牌和来自 API 的请求数据,这需要带有颤振的令牌不记名

总是得到“此请求的授权已被拒绝”。在身份 2 中使用不记名令牌?

不记名令牌未添加到 HTTP 请求 - MSAL2 Angular

jwksError: Not Found 在 GET 请求期间由 jwks-rsa 模块抛出,带有授权不记名令牌到受保护的 api

使用不记名令牌进行身份验证(≠ 授权)

使用 python 请求进行 Web 抓取的 JWT 不记名授权