托管标识 - 如何在本地调试

Posted

技术标签:

【中文标题】托管标识 - 如何在本地调试【英文标题】:Managed Identity - how to debug locally 【发布时间】:2019-06-27 09:16:45 【问题描述】:

我正在使用以下代码在我的 Web 应用程序上测试系统托管标识,当我在 Azure 中部署时它工作正常,但有没有办法在本地进行测试(不授予我的 Azure 帐户对资源的权限?)?

AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();

KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var secret = await keyVaultClient.GetSecretAsync("https://EASDemo.vault.azure.net/secrets/test")
                .ConfigureAwait(false);
return new string[]  secret.Value ;

【问题讨论】:

【参考方案1】:

在本地测试的选项(VS、CLI)记录在here:

使用 Visual Studio 进行身份验证

使用 Visual Studio 进行身份验证:

    登录 Visual Studio 并使用工具 > 选项打开选项。 选择 Azure 服务身份验证,选择本地开发的帐户,然后选择确定。

如果您在使用 Visual Studio 时遇到问题,例如 涉及令牌提供者文件,请仔细查看前面的步骤。

您可能需要重新验证您的开发者令牌。为此,请选择 工具 > 选项,然后选择 Azure 服务身份验证。看 对于所选帐户下的重新身份验证链接。选择它 验证。

如果您不想使用您的开发者身份,您也可以使用证书或密钥(虽然不推荐,因为它可能会错误地签入到源存储库)。这些选项记录在here。

【讨论】:

非常感谢您的回复。目前,我们正在使用基于证书的方法来验证 Key Vault。我们的大部分服务都部署在 Service Fabric 上(很少部署在应用服务中),并且所有开发人员都没有开发人员身份(我们有 100 多个资源在项目上工作)。我们应该如何处理本地调试场景?开发人员大多喜欢在本地调试后签入代码。 文档还说“理想情况下,凭据永远不会出现在开发人员工作站上,也不会检查到源代码控制中。”但是如果我们遵循多种方法来允许本地调试,那么上述观点是不正确的。 请查看此答案,了解如何将基于证书的方法用于服务结构。 ***.com/questions/49859477/…。如果您有后续问题,请告诉我。 有时我发现有必要注销并再次登录(从 VS 中删除帐户并将其重新添加) - 即使凭据是最新的并且可以在 VS 中执行其他任务

以上是关于托管标识 - 如何在本地调试的主要内容,如果未能解决你的问题,请参考以下文章

如何在本地启动 Azure 功能并通过 launch.json 和 tasks.json 将调试器附加到动态处理?

如何缓存和刷新托管标识令牌

如何结合调试 Azure 应用服务和 IIS 托管的 WCF?

如何调试悬停等伪元素?

如何将 Azure 托管标识分配给 Azure 存储帐户?

译如何在 Visual Studio 中调试异步代码