我是#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;
}