Azure.Authenticate与交互式用户登录(Microsoft.Azure.Management.Fluent)

Sam*_*am7 6 c# azure azure-management azure-management-api azure-resource-manager

我曾经将Azure资源管理为一个旧的预览版本.身份验证的工作方式如下:

// Authorize 
this.AuthenticationResult = this.Authorize();
this.Credentials = new TokenCloudCredentials(config.SubscriptionId, this.AuthenticationResult.AccessToken);
this.ResourceManagement = new ResourceManagementClient(this.Credentials, new Uri(config.ManagementBaseUrl));
Run Code Online (Sandbox Code Playgroud)

那将弹出和交互式用户登录窗口.我想用新的流畅的nuget包(Microsoft.Azure.Management.Fluent version="1.0.0")做同样的事情

Azure.Authenticate(???)
Run Code Online (Sandbox Code Playgroud)

这似乎是身份验证方法的最佳文档:https://github.com/Azure/azure-sdk-for-net/blob/Fluent/AUTH.md

但它只涵盖了将硬盘上存储凭据的选项,我希望避免这些选项.因此,无论用户使用我的程序,都需要登录.

总结:如何使用最新的Azure管理API使用交互式用户登录进行身份验证?

Tom*_*SFT 1

根据SDK源码,目前还没有交互式用户登录。

 credentialsCache[adSettings.TokenAudience] = await UserTokenProvider.LoginSilentAsync(
                        userLoginInformation.ClientId, TenantId, userLoginInformation.UserName,
                        userLoginInformation.Password, adSettings, TokenCache.DefaultShared);
Run Code Online (Sandbox Code Playgroud)

但它只涵盖将凭据存储在硬盘上的选项,我想避免这种情况。这样无论用户使用我的程序都需要登录。

为了避免在 HDD 上存储凭据,如果不接受交互式用户登录,我们可以使用带有用户名和密码的 Login Slient 模型。

var credentials = new AzureCredentials(new UserLoginInformation { ClientId = "Azure client Id",UserName = "username",Password = "Password"}, "tenant Id", AzureEnvironment.AzureGlobalCloud);  //AzureChinaCloud,AzureGermanCloud,AzureUSGovernment

var azure = Azure
            .Configure()
            .Authenticate(credentials)
            .WithDefaultSubscription();
Run Code Online (Sandbox Code Playgroud)