azure - 如何通过 MFA 支持.Net Core 将 Azure 数据库与 Active Directory-Universal 连接
问题描述
我正在尝试连接到 azure 数据库。我当前的连接字符串 "return $"Password={this.Password}; 持久安全信息=True;用户 ID = { this.User }; 初始目录 = { this.Database }; 数据源 = { this.Server }";" 像这样。如何使用具有 MFA 支持的 Active Directory-Universal 连接到 Azure 数据库
解决方案
如果要使用 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 来实现它。更多详细信息,请参阅示例。
推荐阅读
- c++ - 没有得到适当的金额
- javascript - 更改节点颜色 onclick react-d3-graph
- wordpress - 强制 Wordpress 服务器 IP 重定向到域名
- windows - 为什么 cmd.exe 以不同方式解析插入符号
- python-3.x - PytestUnknownMarkWarning: Unknown pytest.mark.xxx - 这是一个错字吗?
- javascript - 在 Pug 模板中渲染动态内容
- python - 如何验证带空格的字符串?
- r - 如何获得区间类的最低和最高值
- c - 使用 sprintf_s 从 int 转换为宽字符串
- image - 在上传到 Firebase 存储之前,您是否必须知道图像文件类型?