天天看点

开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online

背景

O365

管理员账户开启

MFA

以后,会发现自己过去写的计划执行的

Powershell

脚本无法正常工作,每次触发时会弹出二次验证的登录界面。

本篇将基于

EXO V2

模块,仅限应用的身份验证通过使用

Azure AD

应用和自签名证书支持无人参与脚本和自动化方案。

创建方法

感谢九叔

官方文档

以下操作的 前提条件: 必须拥有O365的管理员权限

创建自签证书

# Create certificate
$mycert = New-SelfSignedCertificate -DnsName "ITPro.cc" -CertStoreLocation "cert:\CurrentUser\My" -NotAfter (Get-Date).AddYears(1) -KeySpec KeyExchange

# Export certificate to .pfx file
$mycert | Export-PfxCertificate -FilePath mycert.pfx -Password $(ConvertTo-SecureString -String "P@ssw0Rd1234" -AsPlainText -Force)

# Export certificate to .cer file
$mycert | Export-Certificate -FilePath mycert.cer
           
开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online

在 Azure AD 中注册应用程序:

访问AAD Portal⇒打开应用注册⇒点击新注册,并配置以下信息:

  • 名称 :输入描述性内容。 例如,EXO PowerShell - ITPro
  • 支持的帐户类型 :选择

    仅限此组织目录中的帐户

  • 重定向 URI :保留为空
开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online
开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online

向应用程序分配 API 权限:

1.选择清单按钮⇒查找

requiredResourceAccess

关键词,并修改

resourceAppId

,

id

,

type

的值为以下内容:⇒点击保存

"requiredResourceAccess": [
   {
      "resourceAppId": "00000002-0000-0ff1-ce00-000000000000",
      "resourceAccess": [
         {
            "id": "dc50a0fb-09a3-484d-be87-e023b12c6440",
            "type": "Role"
         }
      ]
   }
],
           
开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online
开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online

2.授予API权限

选择API权限⇒点击授权

开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online

授权成功显示以下状态

开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online

将自签证书上传到 Azure AD 应用程序

选择证书和密码⇒点击证书⇒选择上传

开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online
开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online

向应用程序分配 Azure AD 角色(本文只给Exchange Admin角色):

访问AAD概览⇒选择角色与管理员⇒搜索Exchange管理员并点击⇒点击添加分配⇒搜索并选择前面创建的应用名称⇒点击添加

开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online
开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online
开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online
开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online
开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online
开启MFA的账户使用Powershell免密(使用证书应用身份验证)方式连接Exchange Online

使用方法

国际版O365与世纪互联版本执行的参数不一样

国际版O365

Connect-ExchangeOnline -CertificateFilePath "C:\Users\Jason\Desktop\automation-cert.pfx" -CertificatePassword (ConvertTo-SecureString -String "<MyPassword>" -AsPlainText -Force) -AppID "APPID" -Organization "contosoelectronics.onmicrosoft.com"
           

世纪互联版

Connect-ExchangeOnline -CertificateFilePath "/Users/Jason/Code/002_Powershell/Exchange/mycert.pfx" -CertificatePassword (ConvertTo-SecureString -String "<MyPassword>" -AsPlainText -Force) -AppID "APPID" -Organization "xxxx.partner.onmschina.cn" -ExchangeEnvironmentName O365China
           

继续阅读