我正在尝试连接到 azure 数据库。我当前的连接字符串 "return $"Password={this.Password}; 持久安全信息=True;用户 ID = { this.User }; 初始目录 = { this.Database }; 数据源 = { this.Server }";" 像这样。如何使用具有 MFA 支持的 Active Directory-Universal 连接到 Azure 数据库
问问题
396 次
1 回答
0
如果要使用 MFA 将 Azure SQL 数据库与 Active Directory-Universal 连接,可以将 SQL 数据库与 Azure AD 访问令牌连接。例如 1. 注册一个 Web 应用程序
代码(我使用 ADAL 获取访问令牌) static 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 flow 来实现它。更多详细信息,请参阅示例。
于 2019-09-04T04:43:49.993 回答