我正在尝试使用此代码通过c#对我的Azure SQL进行身份验证。该代码有效,但是我不想使用我的用户名和密码。我可以使用其他任何方式进行身份验证吗?令牌?
using System;
using System.Data.SqlClient;
using System.Text;
namespace sqltest
{
class Program
{
static void Main(string[] args)
{
try
{
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = "<server>.database.windows.net";
builder.UserID = "<username>";
builder.Password = "<password>";
builder.InitialCatalog = "<database>";
using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
{
Console.WriteLine("\nQuery data example:");
Console.WriteLine("=========================================\n");
StringBuilder sb = new StringBuilder();
sb.Append("SELECT TOP 20 pc.Name as CategoryName, p.name as ProductName ");
sb.Append("FROM [SalesLT].[ProductCategory] pc ");
sb.Append("JOIN [SalesLT].[Product] p ");
sb.Append("ON pc.productcategoryid = p.productcategoryid;");
String sql = sb.ToString();
using (SqlCommand command = new SqlCommand(sql, connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine("{0} {1}", reader.GetString(0), reader.GetString(1));
}
}
}
}
}
catch (SqlException e)
{
Console.WriteLine(e.ToString());
}
Console.ReadLine();
}
}
}
答案 0 :(得分:1)
您可以使用2种东西。
1. 对Azure资源使用托管身份
这是推荐的方法,在这种方法中,代码将使用天蓝色的身份生成令牌。
.NET Framework 4.6 或更高版本或 .NET Core 2.2 或 使用访问令牌方法需要更高的权限。
有关更多信息->
https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/tutorial-windows-vm-access-sql
2.将敏感信息(用户名/密码/连接字符串)存储在天蓝色的密钥库中
https://docs.microsoft.com/en-us/azure/key-vault/tutorial-net-create-vault-azure-web-app
答案 1 :(得分:0)
您可以使用SQL配置和管理Azure Active Directory身份验证。有关详细信息,请参见this document。
答案 2 :(得分:0)
如上所述,托管身份是实现此目的的方法。 Here is a similar post specific to App Service to Azure SQL这也可以通过ARM来完成,还可以向托管身份授予对关键保险柜的访问策略。