作者:手机用户2502927665 | 来源:互联网 | 2023-09-01 14:02
我有一个可以成功创建访问令牌的应用程序。
using microsoft.Identity.Client
...
private IPublicClientApplication _client;
_client = PublicClientApplicationBuilder.Create(_clientId)
.WithAuthority(AadAuthorityAudience.AzureAdMultipleOrgs)
.WithRedirecturi($"msal{_clientId}://auth")
.Build();
var accounts = await _client.GetaccountsAsync();
_authenticatiOnResult= await _client.AcquireTokenInteractive(_scopes)
.Withaccount(accounts.FirstOrDefault())
.ExecuteAsync();
如何使用令牌通过Azure .Net SDK microsoft.Azure.Management.ResourceManager.Fluent
来管理资源
根据我的测试,我们可以使用访问令牌通过Microsoft.Azure.Management.ResourceManager.Fluent SDk管理Azure资源。有关更多详细信息,请参阅Using authentication token in azure sdk fluent。详细步骤如下。
-
为您使用的Azure AD应用程序配置权限。
-
代码
var client = PublicClientApplicationBuilder.Create(clientId)
.WithAuthority(AadAuthorityAudience.AzureAdMultipleOrgs)
.WithRedirectUri($"msal{clientId}://auth")
.Build();
var accounts = client.GetAccountsAsync().Result;
string[] scopes = { "https://management.azure.com/user_impersonation" };
var result = client.AcquireTokenInteractive(scopes)
.WithAccount(accounts.FirstOrDefault())
.ExecuteAsync().Result;
string subscritiOnID= ""; // the subciption Id
string tenantId= "";// the tenata contains the subscription you use
TokenCredentials tokenCredentials = new TokenCredentials(result.AccessToken);
var azureCredentials = new AzureCredentials(tokenCredentials,tokenCredentials,tenantId,AzureEnvironment.AzureGlobalCloud);
var restClient = RestClient
.Configure()
.WithEnvironment(AzureEnvironment.AzureGlobalCloud)
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.WithCredentials(azureCredentials)
.Build();
var azure = Azure
.Authenticate(restClient,tenantId)
.WithSubscription(subscritionID);
var sp = azure.ResourceGroups.List();
foreach (var group in sp) {
Console.WriteLine("group name :"+ group.Name);
}
结果: