使用用户分配的托管身份连接到Azure Databricks

时间:2020-10-13 19:27:37

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

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应用网址('https://azuredatabricks.net/')作为资源,但此处也未接受该令牌。

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

谢谢!

1 个答案:

答案 0 :(得分:2)

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

enter image description here

我还使用具有相同curl命令的Linux VM测试了相同的用户分配的受管身份,效果很好。

enter image description here