我正在尝试连接到Azure数据库。 我当前的连接字符串 “ return $” Password = {this.Password};持续安全信息=正确;用户ID = {this.User};初始目录= {this.Database};数据源= {this.Server}“;”像这样。如何通过具有MFA支持的Active Directory-Universal连接到Azure数据库
答案 0 :(得分:0)
如果要使用Active Directory-Universal和MFA连接Azure SQL数据库,可以将SQL数据库与Azure AD访问令牌连接。例如 1.注册一个Web应用程序
代码(我使用ADAL获取访问令牌) 静态void Main(string [] args) {
string authory = "https://login.microsoftonline.com/hanxia.onmicrosoft.com";
AuthenticationContext authContext = new AuthenticationContext(authory);
Console.WriteLine("get token");
var result = GetTokenViaCode(authContext).Result;
var connection = new SqlConnection("Data Source=[my database].database.windows.net;Initial Catalog=[my initial catalog];");
connection.AccessToken = result.AccessToken;
connection.Open();
Console.WriteLine();
}
static async Task<AuthenticationResult> GetTokenViaCode(AuthenticationContext ctx)
{
string resource = "https://database.windows.net";
string clientId = "2c4aae8f-392c-419a-b454-8f8c1ff1ec0c";
AuthenticationResult result = null;
try
{
DeviceCodeResult codeResult = await ctx.AcquireDeviceCodeAsync(resource, clientId);
Console.ResetColor();
Console.WriteLine("You need to sign in.");
Console.WriteLine("Message: " + codeResult.Message + "\n");
result = await ctx.AcquireTokenByDeviceCodeAsync(codeResult);
}
catch (Exception exc)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Something went wrong.");
Console.WriteLine("Message: " + exc.Message + "\n");
}
return result;
}
请注意,我在控制台应用程序中对其进行了测试,因此我使用设备代码流来获取访问令牌。如果要在Web应用程序中使用它,则可以使用OpenID流来实现它。有关更多详细信息,请参阅sample。