【问题标题】:Connecting to Azure Databricks with user assigned managed identity使用用户分配的托管标识连接到 Azure Databricks
【发布时间】:2021-01-28 04:29:55
【问题描述】:

TL;DR:由于令牌中的受众声明错误,使用托管身份对 Databricks 的身份验证失败。

技术细节:使用托管标识(使用http://169.254.169.254/metadata/identity/oauth2/token API)获取访问数据块的令牌时,返回的令牌受众是“spn:2ff814a6-3304-4ab8-85cb-cd0e6f879c1d”而不是“2ff814a6-3304-4ab8-” 85cb-cd0e6f879c1d'。

尝试使用获取的令牌时,出现以下错误: Error 400 io.jsonwebtoken.IncorrectClaimException: Expected aud claim to be: 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d, but was: spn:2ff814a6-3304-4ab8-85cb-cd0e6f879c1d.

如果资源是 guid 而不是 url,观众似乎总是以“spn:”为前缀。

我也尝试使用 databricks 应用程序 url ('https://azuredatabricks.net/') 作为资源,但这里也不接受令牌。

这是一个已知问题吗?是否有任何解决方法(使用服务主体方法除外)?

谢谢!

【问题讨论】:

  • 您在哪个服务中使用了用户分配的 MSI?虚拟机?
  • 在 Azure 容器实例中
  • 您是否在jwt.io 中解码了您的令牌以查看其实际受众(即aud)?对吗?
  • 是的。 aud 声明是“spn:2ff814a6-3304-4ab8-85cb-cd0e6f879c1d”而不是“2ff814a6-3304-4ab8-85cb-cd0e6f879c1d”(没有“spn:”),这会导致不匹配。
  • 你能显示你用来获取令牌的详细信息吗?包括参数。

标签: azure authentication azure-active-directory azure-databricks azure-managed-identity


【解决方案1】:

我也可以重现您的问题,它看起来像一个错误,using managed identity with Azure Container Instance 仍然是一个预览功能。

我还使用 Linux 虚拟机使用相同的 curl 命令测试了相同的用户分配托管标识,它工作正常。

【讨论】:

  • 谢谢!观察到该问题仅在 ACI 中重现很重要。我将在 Azure 中打开一个错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 2021-07-26
  • 1970-01-01
  • 2020-08-26
  • 1970-01-01
  • 2019-09-19
相关资源
最近更新 更多