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/')作为资源,但此处也未接受该令牌。
这是一个已知问题吗?是否有其他解决方法(使用服务主体方法除外)?
谢谢!
答案 0 :(得分:2)
我也可以重现您的问题,它看起来像个错误,using managed identity with Azure Container Instance仍然是预览功能。
我还使用具有相同curl命令的Linux VM测试了相同的用户分配的受管身份,效果很好。