使用用户分配的托管标识连接到 Azure Databricks
Connecting to Azure Databricks with user assigned 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:' 为前缀。
我也尝试使用数据块应用程序 url ('https://azuredatabricks.net/') 作为资源,但这里也没有接受令牌。
这是一个已知问题吗?是否有任何解决方法(除了使用服务主体方法)?
谢谢!
我也可以重现你的问题,它看起来像一个错误,using managed identity with Azure Container Instance 仍然是一个 preview 功能。
我还使用具有相同 curl 命令的 Linux VM 测试相同的 user-assigned 托管身份,它工作正常。
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:' 为前缀。
我也尝试使用数据块应用程序 url ('https://azuredatabricks.net/') 作为资源,但这里也没有接受令牌。
这是一个已知问题吗?是否有任何解决方法(除了使用服务主体方法)?
谢谢!
我也可以重现你的问题,它看起来像一个错误,using managed identity with Azure Container Instance 仍然是一个 preview 功能。
我还使用具有相同 curl 命令的 Linux VM 测试相同的 user-assigned 托管身份,它工作正常。