Azure:从应用服务访问 Key Vault 时如何修复“策略要求调用者‘...’使用代表 (OBO) 流”?

2024-03-27

我有一个在 Azure 应用服务中运行的 ASP.net Core 3.1 应用程序。开始使用 Azure Key Vault 存储应用程序的连接字符串和其他机密后,该应用程序现在崩溃并显示以下错误: “HTTP 错误 500.30 ANCM 进程内启动失败”错误页面。

我在 Azure 门户上上下搜索,终于在应用服务的 .NET Core 启动失败列表中找到了一些有意义的内容(隐藏在应用服务 > 诊断和解决问题 > Web 应用程序关闭 > 查看 .NET 启动失败):

Microsoft.Azure.KeyVault.Models.KeyVaultErrorException: The policy requires the caller 
'appid=<redacted>;oid=<redacted>;iss=https://sts.windows.net/<readacted>/' to use on-behalf-of (OBO) 
flow. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125287

我不需要代流。我最初定义了 Key Vault 访问策略以包括应用程序的oid和它的appid因为失误。此后,我通过删除访问策略并重新创建它来进行补救,而无需appid.

我的问题是 -为什么我仍然收到此错误以及如何修复它?

Update:下面是似乎触发此操作的代码。禁用它后,应用程序将恢复正常(尽管没有 Key Vault 集成)。

    var builtConfig = config.Build();
    var vaultUrl = $"https://{builtConfig["KeyVaultName"]}.vault.azure.net/";
    var azureServiceTokenProvider = new AzureServiceTokenProvider();
    var keyVaultClient = new KeyVaultClient(
        new KeyVaultClient.AuthenticationCallback(
            azureServiceTokenProvider.KeyVaultTokenCallback));
    config.AddAzureKeyVault(
        vaultUrl,
        keyVaultClient,
            new DefaultKeyVaultSecretManager());

当您添加访问策略时,它只能选择具有对象 ID 的服务主体。

正如你所描述的,你删除appid并确保您已单击save按钮保存您的操作。

您可以通过为密钥保管库设置密钥保管库访问策略来授予数据平面访问权限。设置这些访问策略、用户、组或应用程序必须具有该 Key Vault 管理平面的贡献者权限.

更详细的你可以参考这个article https://learn.microsoft.com/en-us/azure/key-vault/general/secure-your-key-vault#data-plane-and-access-policies.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure:从应用服务访问 Key Vault 时如何修复“策略要求调用者‘...’使用代表 (OBO) 流”? 的相关文章

随机推荐

  • 在 AWK 脚本输出中的字段周围添加双引号吗?

    我编写了一个 awk 脚本 它将分发器平面文件转换为可导入 Magento 的 CSV 该文件以分号分隔 它没有像进口商要求的那样在每个字段周围加上引号 它工作得相当好 但在没有包含双引号的情况下导致数据导入出现一些问题 我花了几个小时试图
  • 使用 ReactiveCocoa 从对象数组链接异步操作

    我有一个实体数组 我想对这些实体执行异步操作 这些操作应该链接起来 并以与数组中的实体相同的顺序运行 我是 RAC 新手 在 RAC 中如何做到这一点 首先 您需要一个执行异步操作的包装方法 该方法将返回一个信号 我们假设异步操作需要一个完
  • std::max - 需要一个标识符

    我有问题std max 我想不通 int border 35 int myInt 2 int myOtherInt 3 int z std max myInt 2 border myOtherInt 2 border 我已经包含了算法标准头
  • 操作栏后退按钮不起作用

    在这些的帮助下安卓文档 http developer android com training implementing navigation ancestral html NavigateUp 我正在尝试做一个操作栏后退按钮 我得到一个操
  • pyttsx:没有名为“engine”的模块

    我正在尝试使用安装 TTS 包this http pyttsx readthedocs org en latest install html 一切都很好 直到我尝试执行以下命令 import pyttsx 我收到了这个错误 File usr
  • 从 GitHub 更新所有包

    我知道你可以使用以下语法从 CRAN 安装软件包 install packages c Rcpp dependencies TRUE 您可以使用以下命令从 CRAN 更新所有内容 update packages 另一方面 您可以使用以下命令
  • 没有虚拟方法 verifyPhoneNumber,致命异常:main

    将库更新到 Gradle 文件后 我在尝试通过电话号码进行身份验证后遇到此错误 beginning of crash 2020 11 04 00 33 11 574 23042 23042 com roko hearth E Android
  • Terraform:如何有条件地将 EBS 卷分配给 ECS 集群

    我有一个ecs cluster定义 ECS 集群的模块 我希望该模块可以重复使用 这样我就可以创建具有不同配置的各种集群 因此 我希望能够选择指定是否在 ECS 主机的启动配置中创建和附加 EBS 卷 我最初尝试使用count in the
  • Akka 2.1.2 Scheduler 出现问题(“系统”无法识别)

    根据这些示例 我试图运行一个非常简单的循环函数循环 http doc akka io docs akka 2 1 2 scala scheduler html http doc akka io docs akka 2 1 2 scala s
  • 如何在一个项目的不同版本中包含第 3 方代码

    我手上有一个有趣的问题 但我不太清楚处理它的正确方法 这是特定于 sitecore 的 但我想这个问题的解决方案可以应用于拥有多个运行不同版本框架的网站的任何人 现在我有 3 个独立的网站 运行 Sitecore 作为网站的框架和 CMS
  • Python - Win32Com - Outlook - 将今天发送的项目转发到收件箱

    我正在尝试创建一个脚本 将每天上午 8 00 起所有 Outlook 发送的项目转发到专用收件箱 该邮件必须保存在 Outlook 的已发送邮件文件夹中 目前我拥有今天的所有电子邮件 但脚本的转发部分不起作用 我没有任何错误消息 编辑 1
  • 数组数组中的 JavaScript 嵌套过滤器

    我有一个以下格式的对象数组 var full list pid 1 items item id 9 item id 10 item id 12 pid 2 items item id 33 item id 22 i
  • Tornado 非阻塞 SMTP 客户端

    我正在寻找 python 异步 SMTP 客户端以将其与 Torando IoLoop 连接 我发现只有简单的实现 http tornadogists org 907491 http tornadogists org 907491 但它是一
  • 尝试读取宽字符会给出 EOF

    我有一个文本文件 foo txt 包含以下内容 R 2 我有一个大型程序读取它并对每个角色执行操作 但当它到达时它总是收到 EOF 这是代码的相关部分 setlocale LC ALL FILE in fopen argv 1 r whil
  • 人物分类

    又是一个简单的问题 有一个std string 根据用户的语言和区域设置 区域设置 确定哪些字符是数字 符号 空格等 我设法使用以下命令将字符串拆分为一组字符boost 区域设置边界分析工具 http www boost org doc l
  • 构建哈希表/哈希函数

    我想构建一个哈希表 用于查找 1 到 15 个字节的字节序列 字符串 中的键 我想存储一个整数值 所以我想一个用于散列的数组就足够了 我很难概念化如何构造一个哈希函数 以便给定的键将给出数组的索引 任何帮助将不胜感激 哈希中的最大条目数为
  • 在基类中实现 Swift 协议方法

    我有一个 Swift 协议 它定义了如下方法 protocol MyProtocol class func retrieve id String gt Self 我有几个符合此协议的不同类 class MyClass1 MyProtocol
  • 如何使用 AS3 单击 Flash 中的显示对象?

    我正在创建一个照片编辑器应用程序 在某些时候 您编辑的照片应该放置在两层 DisplayObjects 背景图像和图像蒙版 之间 但有一个问题 当您正在编辑的图像被放置在背景层和图像遮罩层之间时 它变得不可点击 因此卡在那里 没有机会再次拖
  • Boto:从配置中动态获取Python代码中的aws_access_key_id和aws_secret_access_key?

    我有我的aws access key id and aws secret access key存储在 boto我想知道是否有办法使用 Boto 在我的 python 代码中检索这些值 因为我需要将它们插入到我的 SQL 语句中以从 S3 复
  • Azure:从应用服务访问 Key Vault 时如何修复“策略要求调用者‘...’使用代表 (OBO) 流”?

    我有一个在 Azure 应用服务中运行的 ASP net Core 3 1 应用程序 开始使用 Azure Key Vault 存储应用程序的连接字符串和其他机密后 该应用程序现在崩溃并显示以下错误 HTTP 错误 500 30 ANCM