尝试通过 Azure Function App 站点 URL 发布 ZIP 文件失败,HTTP 状态代码未经授权

Posted

技术标签:

【中文标题】尝试通过 Azure Function App 站点 URL 发布 ZIP 文件失败,HTTP 状态代码未经授权【英文标题】:Attempt to publish the ZIP file through Azure Function App Site URL failed with HTTP status code Unauthorized 【发布时间】:2021-11-03 21:18:14 【问题描述】:

我在 VS 2019 中创建了一个 Azure 函数,并希望从 VS 2019 部署它。尝试部署时出现以下错误: 通过 HTTP 状态代码 Unauthorized 发布 ZIP 文件的尝试失败。 我尝试了以下选项:

    从门户创建 Function App,然后从 VS2019 发布 Function 项目 从 VS2019 创建函数应用并尝试发布函数

所有选项都不起作用。我总是遇到同样的 UNAUTHORIZED 错误。

【问题讨论】:

我可以使用 Kudu 门户拖放方法部署 Azure Function。但是从 VS 发布/部署仍然出现未经授权的错误。 【参考方案1】:

我试图重现您的问题。是的,如果在部署到 azure 函数后未将特定密钥传递给 URL,我们将获得未经授权。

每个 Function 应用都有一些授权级别:

匿名 功能 管理员 系统 用户

它们在function.json代码文件的authLevel属性中定义。

我尝试使用 Admin authLevel 来运行该功能并获得未经授权的 401,我在功能应用 URL 中给出了功能键:

现在我有 Host (_master) key 到函数应用 URL 以及查询字符串参数(名称),那么结果是:

因此, 当合适的密钥未传递到函数应用 URL 时,我们会获得未经授权。根据 authLevel,我们必须在 URL 中传递密钥。

匿名 - 不需要身份验证。任何有效的 HTTP 请求都会通过 Function - host(主)和 function 键。 Admin - 需要 主机密钥 进行授权。 系统 - 需要功能应用的主密钥进行授权。 用户 - 需要有效的身份验证令牌。

功能管理员系统授权级别基于密钥

有关函数应用中授权级别使用的更多信息,请参阅here。

【讨论】:

谢谢哈里!它是关于将 Azure Function 部署或发布到 Azure Function 应用程序。从 VS 2019 发布或部署该功能时,我收到此错误。我不确定是否需要某些特定权限才能将 Azure 函数发布到我创建的 Azure Function App。我有创建 Azure Function App 的权限,但部署 Azure Function 还需要其他权限吗? 是的@Deb,我们需要特定的 RBAC 角色来部署 azure 功能。 Azure 函数支持 3 个角色。 Contributor - 创建和管理所有类型的资源 Owner - 创建和管理所有类型的资源,并拥有所有类型的数据、删除和角色分配权限 Reader - 读取所有类型的资源,机密除外。有关 Azure 函数支持的角色的更多详细信息,请参阅 here。您应该具有贡献者/所有者角色来创建、部署、删除、编辑 azure 函数。 谢谢哈里!我可以使用 Kudu 门户拖放方法部署功能。我还可以从 Azure 门户中删除该功能。我使用相同的凭据在 VS 中登录,并且从同一个 VS 项目中,我可以毫无问题地创建 Azure Function App。但是,发布失败并出现“未经授权”错误。所以,我认为问题出在其他地方。 @Deb,很高兴收到您的来信! 请在创建函数项目期间检查 Auth Level - 它会询问您access rights。在创建 azure 函数时,它只会为您提供 3 种访问权限,如匿名、函数和管理员。我在上面的评论中给出了如何根据访问级别/授权级别使用访问密钥。 Hari,感谢您为帮助我所做的努力,但我的问题不是关于“调用”该功能,而是关于“部署”VS2019 中的功能。您提供的解决方案完全与调用函数有关。因此,您的解决方案与我的问题无关,也没有帮助我解决问题或找到解决方法。此外,这个问题对我来说仍然存在。我已经在我的 cmets 中提到了一个对其他人有帮助的解决方法。

以上是关于尝试通过 Azure Function App 站点 URL 发布 ZIP 文件失败,HTTP 状态代码未经授权的主要内容,如果未能解决你的问题,请参考以下文章

Azure Function App:Http 触发器与计时器触发器

用于配置 Azure Function App TLS/SSL“仅 HTTPS”设置的 Az CLI

Azure Function App:身份验证中断开发门户

从 Azure Function App 访问带有防火墙的 Azure Blob 存储

Azure Function App HTTP 触发来自请求正文的 CosmosDB 输入查询

在 Postman 中为受 Azure AD B2C 保护的 Azure Function App 请求访问令牌