尝试通过 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 Blob 存储