azure - 启用托管标识后 Azure 应用服务停止工作
问题描述
我在 Azure 应用服务中部署了一个 Docker 容器。我有一个可以调用的公共 API,它返回“Hello world”。
我想在我的应用程序中使用 Azure Managed Identity,因此我在 Azure 门户中启用了它。我按照以下文档启用了“系统分配”:https ://docs.microsoft.com/en-us/azure/app-service/overview-managed-identity?tabs=dotnet
启用托管标识后,我的 Web 应用程序停止工作。重新启动它没有帮助。禁用托管标识可以修复它。
如果我尝试调用我的 API,我会收到错误消息: “:( 应用程序错误如果您是应用程序管理员,您可以访问诊断资源。”
这不仅仅是我的 API,而是整个应用程序停止工作。如果我尝试导航到https://[myApp].azurewebsites.net我会得到同样的错误。如果没有托管身份,我在导航到此地址时会收到“404 页面未找到”。
有没有人遇到过这个?如何解决?
更新:我无法使用示例“静态站点”容器重现它,因此它必须与我们部署的容器有某种关联。但我不明白是什么原因导致它 - 启用托管身份是否会以某种方式改变(减少)应用程序可以做的事情?
更新 2:容器包含一个使用 Azure SDK 向 AAD 进行身份验证的 Go 应用程序。在我们看来,如果启用了托管身份,这种身份验证尝试会使整个应用程序在启动期间崩溃。我们的目的是使用托管标识从 Azure Key Vault 获取机密。然后使用此密钥向 AAD 进行身份验证。现在我们的应用程序甚至没有尝试与托管身份服务进行对话。
解决方案
将评论总结为回复,让其他人更清楚地找到解决方案。
当我们定义MSI_SECRET
为空白(存在,但空白;不存在很好)的那一刻,SDK 崩溃。
所以定义MSI_SECRET
在 KUDU 环境中显示的值。
推荐阅读
- android - MaterialButton 样式不适用于 Android 5.0 (api 21)
- vue.js - vue:运行 npm install --save 后找不到依赖项
- java - 如何将数组元素转换为二进制值
- python - 在 python cgi 中执行 shell 命令的问题
- reactjs - 如何在反应js中获取表格行中的点击事件
- javascript - 下拉菜单创建 - 常量错误 - 意外错误,需要语法 ';'
- sql - 如何在 SQL Server 中计算借方和贷方余额?
- regex - 正则表达式获取仅包含字母的“单词”并忽略字母和数字的组合
- swift - 我应该使用哪个动画师来交换 UILabel.text 值?
- c++ - 我可以安全地转换为返回 void 的函数吗?