【问题标题】:Is it possible to use Hybrid Identity with MassTransit and Azure.Identity?是否可以将混合身份与 MassTransit 和 Azure.Identity 一起使用?
【发布时间】:2022-01-26 13:22:36
【问题描述】:

最新版本的 MassTransit 开始使用 Azure.Identity 包来替代 Microsoft.Azure.SericeBus。

我使用混合身份通过 Azure 服务总线对本地服务进行身份验证。它适用于 Microsoft.Azure.SericeBus 中的 TokenProvider.CreateManagedIdentityTokenProvider。但是,切换到 Azure.Identity 包后,DefaultAzureCredential 和 ManagedIdentityCredential 都不起作用。我收到一条错误消息,提示“服务请求失败:401(未授权)。此操作需要 Manage,EntityRead”。

我怀疑新的 Azure.Identity 包仅适用于 Azure 托管应用程序,不适用于我的本地托管服务。但由于它适用于旧包,我试图弄清楚我是否可以让它工作。

如果可以使用混合身份从最近的 MassTransit 包 >7.3.0 的本地服务访问 ASB,有什么想法吗?

【问题讨论】:

  • 我已经链接了这个问题并标记了拉取请求作者,与此同时,您的帐户是否具有对命名空间的管理访问权限?
  • 混合身份有足够的权限向 ASB 发送/发布/使用,并且与 Microsoft.Azure.SericeBus 配合良好。我需要向我们的 DevOps 确认它是否是“管理”。
  • 克里斯,感谢您调查此问题。你能解释一下你说“我已经链接了这个问题并标记了拉取请求作者”的意思吗?这是否意味着您正在调查它?如果目前不支持,那对我来说也非常有用。
  • 我个人没有深入研究,对 Azure 7 SDK 中的各种凭证类型了解不多。

标签: azure masstransit


【解决方案1】:

我是将 Service Bus SDK 带到 v7 的原始 MassTransit 更改的作者。

底层身份验证库存在差异。

TokenProvider.CreateManagedIdentityTokenProvider 在后台使用AzureServiceTokenProvider。设置底层令牌提供程序时有两种可能的路径:

  1. 如果AzureServicesAuthConnectionString 设置为环境变量,它将用于配置身份验证设置。
  2. 另外,有一个非交互式提供程序(Msi、VS、Azure CLI、WindowsAuth(使用完整框架时))的优先列表

如果未设置 AzureServicesAuthConnectionString 环境变量,DefaultAzureCredential 似乎与底层令牌提供程序几乎相同。如果设置了,可能是环境变量解析的不同。 DefaultAzureCredential 使用 EnvironmentCredential 作为凭据,但它需要单独的租户 ID、客户端 ID 等变量(有关详细信息,请参阅文档)。

很遗憾,我不熟悉混合身份,所以这些 cmets 完全基于我对 Azure 库的理解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多