1

我是#C 的新手,因此请原谅我的问题,这对您来说可能很容易。我试图让我的 clientID、clientSecret 和tenantID 脱离主源代码控制,但我完全不知道该怎么做。我在 Visual Studio 中看到了一些用于 .NET Core 和 Connected Services 的方法,但这对于 .NET Framework 4.7.2 并不真正可用。我对设置配置文件也没有信心。我在 Azure 门户上创建了一个资源组,但我不确定如何让这个密钥保管库工作。

下面的代码表示获取令牌的工作代码,我遇到的问题是隐藏那些硬编码的字符串。

非常感谢您的回答

        private static string GetToken()
        {

            string clientID = "xxxad43f-c825-491f-9130-8cc4da1d1111";
            string clientSecret = "dRbIT5Wn4@u=55L@fLnYRNuDYrFD@111";
            string tenantID = "4ae48b41-0137-4599-8661-fc641fe77111";
            var app = ConfidentialClientApplicationBuilder
                .Create(clientID)
                .WithClientSecret(clientSecret)
                .WithAuthority(new Uri($"https://login.microsoftonline.com/{tenantID}/oauth2/v2.0/token"))
                .Build();

            var ApiID = "api://dddd-api";
            var scopes = new[] { ApiID + "/.default" };

            var result = app.AcquireTokenForClient(scopes).ExecuteAsync().Result;

            if (result == null)
                throw new Exception("Could not acquire token");

            return result.AccessToken;
        }
4

1 回答 1

0

您可以将值设置为环境变量并用于Environment.GetEnvironmentVariable("<variable name>")获取它们。

string clientID = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID");
string clientSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET");
string tenantID = Environment.GetEnvironmentVariable("AZURE_TENANT_ID");
于 2020-04-29T06:20:57.183 回答