以前,我可以使用以下代码通过powershell登录azure订阅。
$azureAccountName ="username"
$azurePassword = ConvertTo-SecureString "Password" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($azureAccountName, $azurePassword)
Login-AzureRmAccount -Credential $psCred最近,微软引入了MFA (Multi-Factor Authentication),现在上面的代码失败了,因为我们现在必须通过在创建配置文件时注册的手机号码上接收到的代码来验证登录。我不想要交互式登录,而是我的代码之前能够做到的自动登录。
有什么建议吗?
发布于 2017-12-11 16:09:26
作为一种解决办法,我认为您可以使用服务主体而不是您的微软帐户。
关于创建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登录它了。
发布于 2017-12-11 16:04:46
这是不可能的(至少据我所知)。
发布于 2019-04-26 09:39:35
使用应用程序密码。
我在这里强调了微软文档中的几件事,但简短的版本是,应用程序密码基本上是绕过MFA的个人后门。请注意,出于这个原因,组织可以限制用户创建应用程序密码。
应用程序密码是一个长的、随机生成的密码,当您登录到不支持两步验证的应用程序或设备时,您只需提供一次密码,而不是常规密码。
某些非浏览器应用程序,如Outlook2010,不支持两步验证。这种缺乏支持意味着,如果你使用两步验证,应用程序将无法工作。要解决此问题,您可以创建一个自动生成的密码,用于每个非浏览器应用程序,与您的正常密码分开。
在最初的两步验证注册过程中,您将获得一个应用程序密码。如果需要多个密码,则可以根据使用两步验证的方式创建其他密码
每台设备使用一个应用程序密码,而不是每个应用程序。例如,为笔记本电脑上的所有应用程序创建一个单一密码,然后为桌面上的所有应用程序创建另一个单一密码。
每个用户有40个密码的限制。如果您尝试在该限制之后创建密码,系统将提示您删除现有密码,然后才能创建新密码。
https://stackoverflow.com/questions/47748538
复制相似问题