如何使用Powershell执行非交互式MFA登录Azure订阅

问题描述 投票:2回答:3

以前,我可以使用以下代码通过powershell登录azure订阅。

$azureAccountName ="username"
$azurePassword = ConvertTo-SecureString "Password" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($azureAccountName, $azurePassword)
Login-AzureRmAccount -Credential $psCred

最近,微软推出了MFA(多重身份验证),现在上述代码失败了,因为我们现在必须通过在创建配置文件时注册的手机号码上收到的代码来验证登录。我不想要交互式登录,而是我的代码之前能够做的自动登录。

有什么建议?

azure login azure-active-directory azure-data-factory
3个回答
3
投票

作为一种解决方法,我认为您可以使用服务主体而不是Microsoft帐户。

关于创建Azure服务主体,我们可以通过Azure门户关注此article来创建它。

然后像这样使用PowerShell:

$subscriptionId="5384xxxx-xxxx-xxxx-xxxx-xxxxe29axxxx"
$tenantid="1fcf418e-66ed-4c99-9449-d8e18bf8737a"
$clientid="1498b171-e1ca-451f-9d7a-8ef56a178b89" #appid
$password="7db814b1-xxxx-4654-xxxx-1d210cb546f9"
$userPassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$userCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $clientid, $userPassword
Add-AzureRmAccount -TenantId $tenantid -ServicePrincipal -SubscriptionId $subscriptionId -Credential $userCredential 

通过这种方式,我们可以使用powershell登录它。


1
投票

这是不可能的(至少据我所知)。


0
投票

使用应用程序密码。

我在这里强调了Microsoft文档中的一些内容,但简短的版本是应用程序密码基本上是绕过MFA的个人后门。请注意,出于这个原因,组织可以限制用户无法创建应用密码。

应用程序密码是一个随机生成的长密码,在登录到不支持两步验证的应用或设备时,您只能提供一次而不是常规密码。

https://docs.microsoft.com/en-us/azure/active-directory/user-help/multi-factor-authentication-end-user-app-passwords

某些非浏览器应用程序(如Outlook 2010)不支持两步验证。缺乏支持意味着如果您使用两步验证,该应用程序将无法正常工作。要解决此问题,您可以创建一个自动生成的密码,以便与每个非浏览器应用程序一起使用,与您的普通密码分开。

在您最初的两步验证注册期间,您会获得一个应用密码。如果您需要多个密码,则可以根据使用两步验证的方式创建其他密码

每个设备使用一个应用密码,而不是每个应用。例如,为笔记本电脑上的所有应用创建一个密码,然后为桌面上的所有应用创建另一个密码。

每个用户限制为40个密码。如果您尝试在该限制之后创建一个,则在允许创建新密码之前,系统会提示您删除现有密码。

© www.soinside.com 2019 - 2024. All rights reserved.