我正在尝试使用 Azure 管理库 NuGet 包来升级使用 ComputeManagementClient.UpgradeByNameAsync 的部署。
我正在使用我的证书的指纹从证书存储中加载它并创建我的凭据,但我的请求不断被以下消息拒绝:
服务器未能对请求进行身份验证。验证证书是否有效并且与此订阅相关联。
我已经做了我能想到的一切来解决这个问题,但没有任何效果。
我已经四次检查我的指纹是否正确,并且证书是否出现在 azure 的管理证书列表中。关于我可能出错的地方有什么想法吗?
我正在尝试使用 Azure 管理库 NuGet 包来升级使用 ComputeManagementClient.UpgradeByNameAsync 的部署。
我正在使用我的证书的指纹从证书存储中加载它并创建我的凭据,但我的请求不断被以下消息拒绝:
服务器未能对请求进行身份验证。验证证书是否有效并且与此订阅相关联。
我已经做了我能想到的一切来解决这个问题,但没有任何效果。
我已经四次检查我的指纹是否正确,并且证书是否出现在 azure 的管理证书列表中。关于我可能出错的地方有什么想法吗?
public static CertificateCloudCredentials FromPublishSettingsFile(string path, string subscriptionId)
{
try
{
var profile = XDocument.Load(path);
var certificate = new X509Certificate2(
Convert.FromBase64String(profile.Descendants("PublishProfile").First()
.Attribute("ManagementCertificate").Value));
return new CertificateCloudCredentials(subscriptionId, certificate);
}
catch (Exception ex)
{
throw ex;
}
}
使用此代码块从 Publish Settings 文件创建类型为 CertificateCloudCredentials 的对象。成功创建对象后,使用以下代码块创建 computeManagementClient。
var computeManagementClient = new ComputeManagementClient(creds);
尽管计算管理客户端仅接受 SubscriptionCloudCredentials,但 CertificateCloudCredentials 是兼容的,将被接受。
斯里的回答相对正确。我写了一篇关于将MAML与发布设置文件一起使用的博客,其方式比 Sri 上面提供的更为冗长,如果您想使用自己的发布设置文件尝试解决方案,请提供一些示例代码。
您需要先将证书安装到本地计算机中,然后才能使用它(根据我的经验)。您是否考虑过切换到使用 TokenCloudCredential,这将允许您使用ADAL NuGet 包将 MAML粘合到 AAD ?这可能会帮助您减轻与证书相关的问题。
不知道为什么它不适用于证书存储,但另一种方法是使用 *.publishsettings 文件随附的指纹进行订阅。您可以使用https://windows.azure.com/download/publishprofile.aspx下载此文件