要求 - 我正在尝试从asp.net MVC应用程序连接到Azure SQL数据库,连接类型为“基于令牌”,以下是我端完成的设置。
a. 创建了一个AAD应用程序(例如:MTSLocal),采用基于证书的身份验证方式。
b. 在SQL中添加了对上述AAD的权限。
CREATE USER [MTSLocal] FROM external provider;
c. 在代码级别,我正在尝试使用客户端ID(从步骤a.获取)和证书获取访问令牌,我要连接的资源是https://database.windows.net。请参考示例代码 -
string authority = string.Format(System.Globalization.CultureInfo.InvariantCulture, "https://login.windows.net/{0}",
"xxxx.onmicrosoft.com");
var authContext = new AuthenticationContext(authority);
AuthenticationResult result = null;
result = await authContext.AcquireTokenAsync("https://database.windows.net", AssertionCert);
token = result.AccessToken;
d. 我能够检索到访问令牌,但当我尝试打开SQL连接时,出现了上述错误。
sqlBuilder["Data Source"] = serverName;
sqlBuilder["Initial Catalog"] = databaseName;
sqlBuilder["Connect Timeout"] = 30;
string accesstoken = GetAccessToken();
using (SqlConnection connection = new SqlConnection(sqlBuilder.ConnectionString))
{
try
{
connection.AccessToken = accesstoken;
connection.Open();
}
catch (Exception ex)
{
}
}
任何对此的帮助都将非常有帮助。