我们的开发人员最近在我们的 Azure SQL Server 中启用了 AAD 身份验证,并将我的身份(比如my.identity@mycompany.com)作为 dbo 添加到MyDatabase。我可以使用 SSMS 成功连接到数据库,现在我想使用代码中的相同身份进行连接:
using System;
using System.Threading.Tasks;
using System.Data.SqlClient;
using Microsoft.Azure.Services.AppAuthentication;
namespace AzureADAuth {
class Program {
static async Task Main(string[] args) {
var azureServiceTokenProvider = new AzureServiceTokenProvider();
string accessToken = await azureServiceTokenProvider.GetAccessTokenAsync("https://management.azure.com/");
Principal principal = azureServiceTokenProvider.PrincipalUsed;
Console.WriteLine($"AppId: {principal.AppId}");
Console.WriteLine($"IsAuthenticated: {principal.IsAuthenticated}");
Console.WriteLine($"TenantId: {principal.TenantId}");
Console.WriteLine($"Type: {principal.Type}");
Console.WriteLine($"UserPrincipalName: {principal.UserPrincipalName}");
using (var connection = new SqlConnection("Data Source=########.database.windows.net; Initial Catalog=MyDatabase;")) {
connection.AccessToken = accessToken;
await connection.OpenAsync();
var command = new SqlCommand("select CURRENT_USER", connection);
using (SqlDataReader reader = await command.ExecuteReaderAsync()) {
await reader.ReadAsync();
Console.WriteLine(reader.GetValue(0));
}
}
Console.ReadKey();
}
}
}
不幸的是,它不起作用。这是输出:
AppId:
IsAuthenticated: True
TenantId: ########-####-####-bc14-789b44d11a3c
Type: User
UserPrincipalName: my.identity@mycompany.com
我的目标是 .NET 完整框架 4.7;Microsoft.Azure.Services.AppAuthentication包是最新的,1.0.1;我的机器没有加入任何域(不确定它是否重要,因为我不需要 AAD 集成身份验证,只需要基于令牌)
慕丝7291255
相关分类