AdomdConnection是否支持访问令牌?C#连接Analysis Services认证问询
使用访问令牌连接Azure Analysis Services的正确实现
你提到用SqlConnection可以直接通过AccessToken属性传入认证令牌,但连接Analysis Services时找不到对应的设置入口,尝试把令牌塞进Password参数里却报了Authentication failed——这确实是个容易踩的坑,因为Analysis Services的ADOMD客户端对OAuth2令牌的处理逻辑和SQL Server不一样。
先给你最直接的解决方案
首先确保你安装了最新版的Microsoft.AnalysisServices.AdomdClient NuGet包(19.0.0及以上版本才支持直接设置AccessToken属性,老版本没有这个能力)。
方式一:直接设置AdomdConnection的AccessToken属性
和SqlConnection的用法几乎一致,新版本的ADOMD客户端已经原生支持这个属性,不需要在连接字符串里绕弯:
// 基础连接字符串,只包含实例地址和数据库,不用加任何认证参数 var connectionString = "Provider=MSOLAP;Data Source=asazure://somewhere.asazure.windows.net/xyz;Catalog=mydb"; var conn = new AdomdConnection(connectionString); // 直接赋值AccessToken,和SqlConnection的用法完全对齐 conn.AccessToken = GetToken(); // 打开连接 conn.Open();
方式二:通过连接字符串传递AccessToken参数
如果你习惯用连接字符串构建器,也可以直接添加AccessToken参数,而不是错误地用Password:
var builder = new OleDbConnectionStringBuilder { ConnectionString = "Provider=MSOLAP;Data Source=asazure://somewhere.asazure.windows.net/xyz;Catalog=mydb" }; // 注意这里是"AccessToken",不是"Password"! builder.Add("AccessToken", GetToken()); var conn = new AdomdConnection(builder.ConnectionString); conn.Open();
为什么你之前的方法会失败?
你之前把令牌放到
Password参数里,MSOLAP驱动会把它当作传统用户名密码认证的密码来处理,而不是OAuth2协议的访问令牌,自然会触发认证失败。这两个参数的语义完全不同,不能混用。
对你的GetToken方法的小优化
你的GetToken用了较旧的HttpWebRequestAPI,推荐换成更现代的HttpClient,代码更简洁且性能更好:
private static string GetToken() { using var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Add("Metadata", "true"); var response = httpClient.GetAsync("xxx").Result; response.EnsureSuccessStatusCode(); var stringResponse = response.Content.ReadAsStringAsync().Result; var j = new JavaScriptSerializer(); var tokenData = (Dictionary<string, string>)j.Deserialize(stringResponse, typeof(Dictionary<string, string>)); return tokenData["access_token"]; }
如果你的项目支持异步,建议改成异步版本(用async/await),避免阻塞线程。
额外注意事项
- 确保你的访问令牌的受众(Audience)是Azure Analysis Services,通常是
https://asazure.windows.net/,受众不匹配会直接导致认证失败。 - 确认令牌对应的身份有访问目标Analysis Services实例和数据库的权限。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

