TL;DR:由于 token 中的受众声明错误,使用托管身份对 Databricks 进行身份验证失败。
技术细节:当使用托管身份(使用 http://169.254.169.254/metadata/identity/oauth2/token API)获取访问数据 block 的 token 时,返回的 token 受众为“spn:2ff814a6-3304-4ab8-85cb-cd0e6f879c1d”,而不是“2ff814a6-3304-4ab8-” 85cb-cd0e6f879c1d'。
当尝试使用获取的 token 时,出现以下错误:
错误 400 io.jsonwebtoken.In CorrectClaimException:预期的 aud 声明为:2ff814a6-3304-4ab8-85cb-cd0e6f879c1d,但实际为:spn:2ff814a6-3304-4ab8-85cb-cd0e6f879c1d。
如果资源是 guid 而不是 url,受众似乎总是以“spn:”为前缀。
我还尝试使用 databricks 应用程序 URL('https://azuredatabricks.net/')作为资源,但此处也不接受 token 。
这是一个已知问题吗?是否有任何解决方法(除了使用服务主体方法之外)?
谢谢!
最佳答案
我还可以重现您的问题,它看起来像一个错误,using managed identity with Azure Container Instance仍然是预览功能。
我还使用相同的curl命令在Linux VM上测试了相同的用户分配的托管身份,它工作得很好。
关于azure - 使用用户分配的托管标识连接到 Azure Databricks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64341919/