1

Azure Management Libraries NuGet パッケージを使用して、ComputeManagementClient.UpgradeByNameAsync を使用してデプロイをアップグレードしようとしています。

証明書の拇印を使用して証明書ストアから証明書を読み込み、資格情報を作成していますが、要求が拒否され続け、次のメッセージが表示されます。

サーバーは要求を認証できませんでした。証明書が有効であり、このサブスクリプションに関連付けられていることを確認してください。

私はそれを理解するために考えられるすべてのことをしましたが、何も機能していません。

拇印が正しいこと、および証明書が Azure の管理証明書リストに表示されることを 4 回確認しました。私が間違っている可能性がある場所についてのアイデアはありますか?

4

3 に答える 3

1
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;
            }
        }

このコード ブロックを使用して、公開設定ファイルから CertificateCloudCredentials タイプのオブジェクトを作成します。オブジェクトが正常に作成されたら、以下のコード ブロックを使用して computeManagementClient を作成します。

var computeManagementClient = new ComputeManagementClient(creds);

コンピューティング管理クライアントは SubscriptionCloudCredentials のみを受け入れますが、CertificateCloudCredentials は互換性のあるものであり、受け入れられます。

于 2014-03-28T13:06:21.823 に答える
0

スリの答えは比較的正しいです。私は、 MAMLをパブリッシュ設定ファイルで使用することについて、Sri が上記で提供した方法よりもはるかに長い方法でブログを作成しました。独自のパブリッシュ設定ファイルでソリューションを試してみたい場合は、いくつかのサンプル コードを使用してください。

(私の経験に基づいて)使用する前に、証明書をローカルマシンにインストールする必要があります。ADAL NuGet パッケージを使用して MAML を AAD に接着できる TokenCloudCredential を使用するように切り替えることを考えたことはありますか? これは、証明書に関連する問題を軽減するのに役立つ場合があります。

于 2014-04-24T04:36:26.473 に答える
0

証明書ストアで機能しない理由はわかりませんが、それを行う別の方法は、サブスクリプションの *.publishsettings ファイルに付属する拇印を使用することです。このファイルは、https://windows.azure.com/download/publishprofile.aspxを使用してダウンロードできます。

于 2014-03-24T06:15:24.120 に答える