【发布时间】:2019-06-23 13:48:39
【问题描述】:
我正在尝试使用用户定义的 MSI 来获取身份验证令牌,然后连接到 SQL 数据库。
到目前为止我看到的步骤;
- 创建用户定义的托管标识 --> 完成。
- 使用 AzureServiceTokenProvider 获取身份验证令牌 --> 这是我得到错误/异常的地方。
- 将使用 AzureServiceTokenProvider 接收的身份验证令牌用于 SQLConnection。
- 执行 ADO.Net 或 EF 操作。
我在我的 Azure 订阅中创建了一个用户定义的托管标识。然后我开始编写一个简单的代码来使用 AzureServiceTokenProvider 获取访问令牌。代码如下;
static void Main(string[] args)
{
try
{
//var tokenProviderConnectionString = "RunAs=Developer; DeveloperTool=VisualStudio";
var tokenProviderConnectionString = "RunAs=App;AppId=bbda13b3-b948-4d02-91bb-31f198729887";
//var azureResource = "https://management.azure.com/";
var azureResource = "https://database.windows.net/";
Console.WriteLine("Attempting to gain access token from Azure...");
var azureServiceTokenProvider = new AzureServiceTokenProvider(tokenProviderConnectionString);
string accessToken = azureServiceTokenProvider.GetAccessTokenAsync(azureResource, "<<My Tenant ID>>").GetAwaiter().GetResult();
Console.WriteLine("Successful");
Console.WriteLine($"Access Token: {accessToken}");
}
catch (Exception ex)
{
Console.WriteLine("Error");
Console.WriteLine(ex.ToString());
}
}
string accessToken = azureServiceTokenProvider.GetAccessTokenAsync(azureResource, "89cda43f-eb76-413b-bcbf-5c9b17542338").GetAwaiter().GetResult(); 出现错误。
例外是
Parameters: Connection String: RunAs=App;AppId=bbda13b3-b948-4d02-91bb-31f198729887, Resource: https://database.windows.net/, Authority: https://login.microsoftonline.com/<<My Tenant ID>>. Exception Message: Tried to get token using Managed Service Identity. Access token could not be acquired. An error occurred while sending the request.
如果我使用var tokenProviderConnectionString = "RunAs=Developer; DeveloperTool=VisualStudio"; 作为连接字符串,那么我可以获取访问令牌,因为它使用我的 Visual Studio 登录作为 MSI。
但是当我使用var tokenProviderConnectionString = "RunAs=App;AppId=bbda13b3-b948-4d02-91bb-31f198729887"; 时,我得到了上面提到的异常。我认为 AzureServiceTokenProvider 中可能存在错误,或者我在请求中遗漏了某些内容。
任何指针?
【问题讨论】:
-
您的问题有最新进展吗?