使用交互式用户登录进行Azure身份验证(Microsoft.Azure.Management.Fluent)

8

我曾经管理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));

这将弹出一个交互式用户登录窗口。我希望使用新的流畅的NuGet包(Microsoft.Azure.Management.Fluent version="1.0.0")做同样的事情。

Azure.Authenticate(???)

这似乎是身份验证方法最好的文档:https://github.com/Azure/azure-sdk-for-net/blob/Fluent/AUTH.md。但它只涵盖将凭据存储在硬盘上的选项,而我希望避免这种情况。因此无论使用我的程序的用户是谁都需要登录。简而言之:如何使用最新的Azure管理API进行交互式用户登录认证?
2个回答

1

Fluent库不支持交互式登录。如果您的项目针对.Net Core,则可以使用设备流身份验证,但这将需要您弹出从Azure AD收到的调用方信息 Fluent Repo中的源代码


1
根据SDK 源代码,目前没有交互式用户登录。
 credentialsCache[adSettings.TokenAudience] = await UserTokenProvider.LoginSilentAsync(
                        userLoginInformation.ClientId, TenantId, userLoginInformation.UserName,
                        userLoginInformation.Password, adSettings, TokenCache.DefaultShared);

为避免将凭据存储在硬盘上,如果不接受交互式用户登录,则可以使用带有用户名和密码的“静默登录”模型。但它仅涵盖了将凭据存储在硬盘上的选项,这是我想要避免的。因此,无论使用我的程序的用户是谁,都需要登录。
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();

关于Azure的客户端ID租户ID,请参考创建活动目录应用程序 - Tom Sun - MSFT
1
这会与两步验证一起如何运作呢?如果与两步验证一起使用,根据我的经验,我们需要使用交互界面。 - Tom Sun - MSFT
我想那就是我的最初问题: “我该如何使用交互式界面?” - Sam7
根据 SDK 源代码 Microsoft.Azure.Management.Fluent,目前不支持使用交互界面登录 Azure SDK。 - Tom Sun - MSFT
1
这太荒谬了。我应该能够通过我的Azure帐户、用户名和密码进行编程登录。这个客户端ID和租户ID是什么鬼?当我们编写代码来完成任务时,它应该能够执行我们的帐户被授权执行的任何操作。它只是一个工具。它为我点击按钮,而我本来也要自己做的事情提供了帮助。它是一个辅助工具。如果我可以使用我的用户名和密码登录Azure门户并执行某些操作,那么我应该能够使用相同的凭据编写代码来完成相同的操作,而不需要跳过所有这些复杂的额外步骤。 - Triynko
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接