簡體   English   中英

如何在 Powershell 中存儲 MFA 憑據

[英]How do I store a MFA credential in Powershell

在基本身份驗證下,您曾經能夠將憑據存儲在變量中

$cred = Get-Credential

現在我們正在使用現代身份驗證,我們的多重身份驗證是 Duo。

如何將 MFA 的憑據存儲到變量中,以便將它們插入腳本中?

例子

$mfacred = *whateverthecodeis*
Connect-MsolService -Credential $mfacred
Connect-AzureAD -Credential $mfacred

編輯我不想繞過 MFA,我想提示它並以腳本的其余部分可以使用憑據和令牌的方式存儲憑據和令牌。

就我在腳本中啟用 MFA 帳戶的經驗而言。 您能夠繞過 MFA 的唯一方法是使用不帶“-Credential”參數的 cmdlet。

MFA 的主要用例是防止以下情況:在受感染帳戶上運行的腳本。

更新:

因此,有一種方法可以通過編程方式獲取令牌。 這是通過使用 Azure 模塊和/或其他 O365 模塊安裝附帶的 ADAL 二進制文件來完成的。 沒有簡單的方法來提示並將令牌存儲在變量中。

您需要在腳本中加載 DLL 以開始緩存令牌:

Add-Type -Path 'C:\Program Files\WindowsPowerShell\Modules\AzureAD\2.0.x.x\Microsoft.IdentityModel.Clients.ActiveDirectory.dll'

您可以使用AcquireTokenAsync方法預先獲取訪問令牌。

$accesstoken = [Microsoft.IdentityModel.Clients.ActiveDirectory.TokenCache]::DefaultShared
$accesstoken.ReadItems() | select DisplayableId, Authority, ClientId, Resource

上面的 ReadItem() 方法將為您提供將令牌存儲在變量中所需的所有信息。

$authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList #PLACE AUTHORITY URL HERE#
$client_id = "CLIENT_ID INFO"
$Credential = Get-Credential YOURUSERNAME@COMPANY.COM
$AzureADCred = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.UserPasswordCredential" -ArgumentList $Credential.UserName,$Credential.Password
$authResult = [Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContextIntegratedAuthExtensions]::AcquireTokenAsync($authContext,"https://RESOURCE-URL.COM",$client_Id,$AzureADCred)

獲得令牌后,你可以使用它連接到你的會話,它可以是在線交換、Azure 或 Office。

$Authorization = "Bearer {0}" -f $authResult.Result.AccessToken
$Password = ConvertTo-SecureString -AsPlainText $Authorization -Force
$Ctoken = New-Object System.Management.Automation.PSCredential -ArgumentList "YourCompanyUserAccount@COMPANY.COM", $Password

有一個警告,這些僅適用於訪問令牌,不考慮刷新令牌。 根據您使用的 ADAL 二進制文件,您甚至可能無法獲得返回的刷新令牌。

要了解有關訪問令牌的更多信息,您可以在此處研究更多信息

您可以嘗試支持現代身份驗證和無人值守腳本的 EXO V2 預覽模塊。

您可以使用證書或現有的服務主體和客戶端機密,而不是存儲密碼。

https://o365reports.com/2020/07/04/modern-auth-and-unattended-scripts-in-exchange-online-powershell-v2/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM