我是#C的新手,所以请原谅我的问题,这对你来说可能很简单。我想把我的clientID、clientSecret和tenantID从主源码控制中取出来,但我完全不知道该怎么做。我在Visual Studio中看到了一些针对.NET Core与Connected Services的方法,但是对于.NET Framework 4.7.2来说,这个方法并不适用。我对设置配置文件也没有信心。我已经在Azure Portal上创建了一个资源组,但我不知道如何让这个密钥库工作。
下面的代码代表了获取令牌的工作代码,我的问题是要隐藏那些硬编码字符串。
非常感谢您的解答
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;
}
你可以把值设置为环境变量,然后使用 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");