如何为Exchange Online编写MultiFactor Powershell脚本

时间:2018-10-09 19:19:17

标签: powershell exchange-server multi-factor-authentication

我有MS提供的Powershell脚本,并且已经编辑过。 MS确实提供了使用旧代码的脚本。由于我们启用了MFA,因此我们不再使用Get-Credential进行身份验证,因为我们使用的是Modern Auth而不是Basic。如何编辑代码以支持MFA?我们不使用Auzer MFA,而使用Duo。

旧代码:

$adminCredential = Get-Credential

    Write-Output "Connecting to Exchange Online Remote Powershell Service"
    $ExoSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $adminCredential -Authentication Basic -AllowRedirection
    if ($null -ne $ExoSession) { 
        Import-PSSession $ExoSession -AllowClobber
    } else {
        Write-Output "  No EXO service set up for this account"
    }

    Write-Output "Connecting to EOP Powershell Service"
    $EopSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.compliance.protection.outlook.com/powershell-liveid/ -Credential $adminCredential -Authentication Basic -AllowRedirection
    if ($null -ne $EopSession) { 
        Import-PSSession $EopSession -AllowClobber
    } else {
        Write-Output "  No EOP service set up for this account"
    }

新命令应该是Connect-IPPSSession而不是New-PSSession,但是我必须以某种方式更改Get-Credential以传递凭据和MFA,我只是不知道该怎么做。

4 个答案:

答案 0 :(得分:1)

如果要使用OAuth身份验证,则需要具有访问令牌

一旦应用程序具有访问令牌,它可以使用该令牌通过API(仅限于访问范围)通过API访问用户帐户,直到令牌过期或被撤销。

以下是使用curl的API请求示例。请注意,它包括访问令牌:

curl -X POST -H "Authorization: Bearer ACCESS_TOKEN""https://api.digitalocean.com/v2/$OBJECT"

您可以参考以下链接对OAuth进行身份验证:

Using PowerShell to Authenticate Against OAuth

答案 1 :(得分:1)

全面披露,我和我支持的任何客户都不使用Duo。

话虽如此,MS尚无有关使用DUO作为O365来源的PowerShell和MFA的文档。

根据MS ...

Connect to Office 365 services with multifactor authentication (MFA) and PowerShell

Connect to Exchange Online PowerShell using multi-factor authentication

您不能使用Exchange Online远程PowerShell模块在同一会话(窗口)中连接到Exchange Online PowerShell和安全与合规中心PowerShell。您需要使用Exchange Online远程PowerShell模块的单独会话。

如果要使用多因素身份验证(MFA) 连接到Exchange Online PowerShell, 您将无法使用以下说明:连接到Exchange Online PowerShell

https://docs.microsoft.com/en-us/powershell/exchange/exchange-online/connect-to-exchange-online-powershell/connect-to-exchange-online-powershell?view=exchange-ps

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection

使用远程PowerShell连接到Exchange Online。

MFA要求您安装Exchange Online远程PowerShell模块,并使用Connect-EXOPSSession cmdlet进行连接。

Connect-EXOPSSession -UserPrincipalName <UPN> [-ConnectionUri <ConnectionUri> -AzureADAuthorizationEndPointUri <AzureADUri>]

Multi-Factor Authentication (MFA) Setup and End-User Experience with Office 365 and PowerShell

如果还没有,请参见。

How do I change the username format sent to Duo?

答案 2 :(得分:0)

在阅读答案后,我意识到我没有以足够详细的方式来构造我的问题以找到所需的答案。我将问题搁置一旁,并将答案之一标记为答案,因为它确实回答了我提出的问题,而不是我希望学习的内容。

答案 3 :(得分:0)

Connect-ExchangeOnline支持使用2FA登录。您可以直接运行它而无需任何参数。