【问题标题】:EWS and AutoDiscoverURL error using Azure AD Certificate with Powershell使用带有 Powershell 的 Azure AD 证书的 EWS 和 AutoDiscoverURL 错误
【发布时间】:2022-10-24 06:48:00
【问题描述】:

我尝试过使用和不使用 Secret ID,现在使用自签名证书,但我不断收到相同的错误:

使用“2”参数调用“AutodiscoverUrl”的异常:“The 预期的 XML 节点类型是 XmlDeclaration,但实际类型是 元素。”

我的 PowerShell 脚本:

$TenantId = "blahblah"
$AppClientId="blahblah"
$EDIcertThumbPrint = "blahblah"
$EDIcert = get-childitem Cert:\CurrentUser\My\$EDIcertThumbPrint

$MsalParams = @{
    ClientId = $AppClientId
    TenantId = $TenantId
    ClientCertificate = $EDIcert
    Scopes = "https://outlook.office.com/.default"
}
$MsalResponse = Get-MsalToken @MsalParams
$EWSAccessToken  = $MsalResponse.AccessToken

Import-Module 'C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll'

#Provide the mailbox id (email address) to connect via AutoDiscover
$MailboxName ="email@myemaildomain.com.au"
$ews = [Microsoft.Exchange.WebServices.Data.ExchangeService]::new()
$ews.Credentials = [Microsoft.Exchange.WebServices.Data.OAuthCredentials]$EWSAccessToken
$ews.Url = "https://outlook.office365.com/EWS/Exchange.asmx"
$ews.AutodiscoverUrl($MailboxName,{$true})

我到处搜索该错误消息,但我没有得到任何地方。该错误没有意义,因为我没有以任何方式引用 XML - 除非它嵌入在 EWS 中?

唯一有效的情况是我既不使用秘密 ID 也不使用证书,但令牌仅持续 1 小时!我需要让它自动化,这样我就可以进入我的邮箱并从电子邮件中提取文件。

谢谢

【问题讨论】:

    标签: powershell azure-active-directory exchangewebservices


    【解决方案1】:

    AutoDiscoverv1 不支持客户端凭据流,因此您需要删除该行

    $ews.AutodiscoverUrl($MailboxName,{$true})

    无论如何它都是多余的,因为您已经设置了 EWS 端点,例如

    $ews.Url = "https://outlook.office365.com/EWS/Exchange.asmx"

    唯一会更改端点的情况是,如果您在混合环境中拥有本地邮箱,并且您可以通过其他方法来检测它,例如自动发现 v2。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-18
      • 2014-08-13
      • 1970-01-01
      • 2016-06-08
      • 2021-04-05
      • 2016-10-06
      • 2022-01-15
      • 2021-05-28
      相关资源
      最近更新 更多