gpt4 book ai didi

.net - 如何使用 Microsoft.Identity.Client.PublicClientApplication C# 验证 Azure 资源 API 的交互

转载 作者:行者123 更新时间:2023-12-03 04:08:18 25 4
gpt4 key购买 nike

我有一个由 VS 的 Windows Template Studio 创建的应用程序。我已经进行了身份验证,并且可以使用与 Azure 门户(交互式)相同的凭据成功获取 token 。

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();

如何将 token 与 Azure API 库一起使用,例如:

  • Microsoft.Azure.Management.ResourceManager.Fluent

  • Microsoft.Azure.Services.AppAuthentication

最佳答案

根据我的测试,我们可以使用访问 token 来管理Azure资源Microsoft.Azure.Management.ResourceManager.Fluent SDK。更多详情请引用Using authentication token in azure sdk fluent 。详细步骤如下。

  1. 为您使用的 Azure AD 应用程序配置权限。 enter image description here enter image description here

  2. 代码

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);
}

enter image description here

另外,关于sdk Microsoft.Azure.Services.AppAuthentication ,它还用于启用服务对 Azure 服务进行身份验证。换句话说,是另一种获取token的方式。但它仅支持 Azure MSI 的身份验证。

关于.net - 如何使用 Microsoft.Identity.Client.PublicClientApplication C# 验证 Azure 资源 API 的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58425526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com