我需要确切知道如何使用c#登录Azure。
我基本上想要这样做,但是从代码中: ]链接](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-export)
以下是我试图通过互联网复制的代码: 但我不知道如何生成令牌。
SqlManagementClient managementClient = new SqlManagementClient(new TokenCloudCredentials(subscriptionId, GetAccessToken(tenantId, clientId, secretKey)));
var exportParams = new DacExportParameters()
{
BlobCredentials = new DacExportParameters.BlobCredentialsParameter()
{
StorageAccessKey = storageKey,
Uri = new Uri(baseStorageUri)
},
ConnectionInfo = new DacExportParameters.ConnectionInfoParameter()
{
ServerName = azureSqlServer,
DatabaseName = azureSqlDatabase,
UserName = adminLogin,
Password = adminPassword
}
};
var exportResult = managementClient.Dac.Export(azureSqlServerName, exportParams);
我有一个GetToken函数,但我不知道该把它带到哪里 租户+客户ID +秘密
private static string GetAccessToken(string tenantId, string
clientId, string secretKey)
{
var authenticationContext = new
AuthenticationContext($"https://login.windows.net/{tenantId}");
var credential = new ClientCredential(clientId, secretKey);
var result =authenticationContext
.AcquireTokenAsync("https://management.core.windows.net/",
credential);
if (result == null)
{
throw new InvalidOperationException("Failed to obtain the JWT token");
}
var token = result.Result.AccessToken;
return token;
}
之前曾问过这个问题 Azure Database export with C# 但我需要查看有关如何获取连接信息的实际代码和说明。
答案 0 :(得分:2)
我需要查看有关如何获取连接信息的实际代码和说明。
我建议您按照此tutorial关于注册AAD应用程序并添加密钥。此外,您还可以关注Using the Azure ARM REST API – Get Access Token。
SqlManagementClient managementClient = new SqlManagementClient(new TokenCloudCredentials(subscriptionId,GetAccessToken(tenantId,clientId,secretKey)));
根据您的代码,我假设您使用的是包Microsoft.WindowsAzure.Management.Sql,如果您使用TokenCloudCredentials
,则可能会收到以下错误响应:
AFAIK,Microsoft.WindowsAzure.Management.Libraries需要X509Certificate2身份验证,您需要为CertificateCloudCredentials
构建SqlManagementClient
。要在您的订阅下上传管理证书,您可以关注Upload an Azure Service Management Certificate。要检索X509Certificate2
实例,您可以按照here中使用管理证书的身份验证部分下的代码段进行操作。
对于基于令牌的身份验证,您可以使用包Microsoft.Azure.Management.Sql并按如下方式构建SqlManagementClient
:
var sqlManagement = new SqlManagementClient(new TokenCredentials("{access-token}"));
此外,您需要在调用https://management.core.windows.net/
方法时将资源从https://management.azure.com/
更改为AcquireTokenAsync
。