我们有一个设置为使用 EntityFramework 的应用程序。我需要更新该应用程序以使用 Azure Identity 访问数据库。基本上我需要做以下事情:
- 使用 AzurePowershell Credentials 获取访问令牌
- 使用该访问令牌创建 SQL 连接
- 将令牌添加到连接并返回给调用者
这是我到目前为止所拥有的(但我知道我在这里遗漏了很多东西,因为我遇到了编译错误)。我一直在寻找一些例子来做到这一点,但没有成功。
public static DbConnection CreateConnection( string efConnectionString )
{
var credential = new AzurePowerShellCredential();
System.Threading.CancellationToken cancellationToken = default;
TokenRequestContext requestContext = "https://database.windows.net/.default";
string accessToken = AzurePowerShellCredential.GetToken( "https://database.windows.net/.default", cancellationToken );
SqlConnectionStringBuilder sqlConnection = new SqlConnectionStringBuilder( efConnectionString );
//create sql connection
using( SqlConnection sqlConn = new SqlConnection( efConnectionString ) )
{
sqlConn.AccessToken = accessToken;
return sqlConn;
}
对于初学者, requestContext 不喜欢被设置为字符串,我试图找出将令牌添加到连接字符串并将其成功发送回的最佳方法。此外,AzurePowerShellCredential.GetToken 不喜欢我与数据库地址一起传递的字符串。我传入的连接字符串如下所示:
"Server=tcp:servername.database.windows.net,1433;Database=databasename;User ID=UserID@servername;Password=password;Trusted_Connection=False;Encrypt=True;"
为了使其成功运行,我将省略上述连接字符串中的用户 ID 和密码,以便可以将其替换为 AzureCredentials。
我非常感谢可以提供的任何帮助。谢谢!