为了账号安全,请及时绑定邮箱和手机立即绑定

将 AzureCredentialsFactory.FromServicePrincipal

将 AzureCredentialsFactory.FromServicePrincipal

C#
倚天杖 2022-06-12 15:12:35
我使用 .NET 框架 4.7.2 创建了一个控制台应用程序,以使用这些 nuget 包连接到 Azure 资源管理器 API:Microsoft.Azure.Management.ResourceManager.Fluent:v1.18.0 | 下载链接Microsoft.Azure.Management.Fluent:v1.18.0 | 下载链接这是代码:namespace AzResourceManager{    class Program    {        static void Main(string[] args)        {            var clientId = "********-****-****-****-************";            var subscriptionId = "********-****-****-****-************";            var tenantId = "********-****-****-****-************";             var cert = GetCertificate("********************************");            var creds = new AzureCredentialsFactory().FromServicePrincipal(clientId, cert, tenantId, AzureEnvironment.AzureGlobalCloud);            var azure = Azure.Authenticate(creds).WithSubscription(subscriptionId);            foreach (var rGroup in azure.ResourceGroups.List())            {                Console.WriteLine(rGroup.Name);            }        }        private static X509Certificate2 GetCertificate(string thumbPrint)        {            var certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);            certStore.Open(OpenFlags.ReadOnly);            try            {                var certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, thumbPrint, false);                if (certCollection.Count <= 0)                    throw new InvalidOperationException("Unable to load certificate from store");                return certCollection[0];            }            finally            {                certStore.Close();            }        }    }}当执行到达这一行时foreach (var rGroup in azure.ResourceGroups.List())应用程序抛出一个System.NullReferenceException: 'Object reference not set to an instance of an object.'我在 Azure Active Directory 和笔记本电脑中注册的应用程序中安装了证书。我尝试更新一些软件包,但结果是一样的。我唯一无法更新到最新版本的软件包是Microsoft.IdentityModel.Clients.ActiveDirectory(最新版本:v4.4.1),我只能将其更新到版本 v3.19.8
查看完整描述

2 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

您是否能够使用Resource Groups List REST API获得结果。我已经尝试过自己,并且在使用您的代码时没有收到任何错误,并且对我来说效果很好。请确保已为您注册的应用程序服务主体提供了至少对您的订阅的读者访问权限。请按照文档使用 RBAC 和 Azure 门户管理访问权限为 Azure 资源分配角色。



查看完整回答
反对 回复 2022-06-12
?
喵喔喔

TA贡献1735条经验 获得超5个赞

尝试使用带有.CER扩展名的导出证书时,我得到同样令人沮丧的 System.NullReferenceException,但是在使用密码以.PFX格式导出证书时:重载的 FromServicePrincipal 函数成功


var credentials = SdkContext

        .AzureCredentialsFactory

        .FromServicePrincipal(

             "********-****-****-****-************", // clientId

              @"c:\cert.pfx", // certificate file path

             "123456", // certificate password

             "********-****-****-****-************", //tenantId

             AzureEnvironment.AzureGlobalCloud);


查看完整回答
反对 回复 2022-06-12
  • 2 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信