世紀互聯Office365 Exchange混合部署無法使用Microsoft Federation Gateway(MFG)查詢忙閑信息問題,配置OAuth步驟
在Office365 Exchange2013混合部署環境中,Free/Busy忙/閑信息的查詢可以通過兩種方式:
- 通過Microsoft Federation Gateway以及本地和云端之間的Organizational RelationShip(由混合向導創建)
- 通過配置Open Authentication(OAuth)以及本地和云端的IntraOrganizationConnector來實現
而21V Office365無法使用傳統的日歷忙/閑信息共享(通過Microsoft Federation Gateway來進行Free/Busy lookup),21V的Office365混合環境中,Exchange 2013雖然可以創建MFG,但是無法用來做忙/閑信息的查詢方式, 以下是世紀互聯版(21Vianet)Office365當中手動配置OAuth的步驟,配置OAuth其實是有現成的向導來自動配置,但是有些情況下,向導配置出來后,OAuth無法工作,這種情況下,可以嘗試手動配置,并且,對于本地Exchange 2013/Exchange 2010或者Exchange 2013/Exchange 2007 Mixed混合環境,也需要手動配置OAuth:
- 為Exchange Online組織創建授權服務器對象
在本地 Exchange Management Shell中運行以下命令
New-AuthServer -Name "MicrosoftAzureACS" -AuthMetadataUrl https://accounts.accesscontrol.chinacloudapi.cn/<yourverified-domain>/metadata/json/1
運行成功后,驗證配置如下:
2. 為Exchange Online組織啟用Partner Application
Get-PartnerApplication | ?{$_.ApplicationIdentifier -eq "00000002-0000-0ff1-ce00-000000000000"-and $_.Realm -eq ""} | Set-PartnerApplication -Enabled $true
3. 導出本地授權證書
在此步驟中,你需要運行腳本去導出本地的授權證書,然后導入到Exchange Online
將以下文本保存到名為 ExportAuthCert.ps1. 的PowerShell腳本文件中:
$thumbprint = (get-authconfig).CurrentCertificateThumbprintif((test-path $env:SYSTEMDRIVE\OAuthConfig) -eq $false){ md $env:SYSTEMDRIVE\OAuthConfig}cd $env:SYSTEMDRIVE\OAuthConfig $oAuthCert = (dir Cert:\LocalMachine\My) | where {$_.Thumbprint -match $thumbprint}$certType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert$certBytes = $oAuthCert.Export($certType)$CertFile = "$env:SYSTEMDRIVE\OAuthConfig\OAuthCert.cer"[System.IO.File]::WriteAllBytes($CertFile, $certBytes)
在本地Exchange Management Shell當中運行腳本,如下圖:
4. 將本地授權證書上載到Azure Active Directory ACS
將以下腳本保存為 Azure-Auth.ps1
Connect-MsolService;
Import-Module msonlineextended;
$CertFile = "$env:SYSTEMDRIVE\OAuthConfig\OAuthCert.cer"
$objFSO = New-Object -ComObject Scripting.FileSystemObject;
$CertFile = $objFSO.GetAbsolutePathName($CertFile);
$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate
$cer.Import($CertFile);
$binCert = $cer.GetRawCertData();
$credValue = [System.Convert]::ToBase64String($binCert);
$ServiceName = "00000002-0000-0ff1-ce00-000000000000";
$p = Get-MsolServicePrincipal -ServicePrincipalName $ServiceName
New-MsolServicePrincipalCredential -AppPrincipalId $p.AppPrincipalId -Type asymmetric -Usage Verify -Value $credValue
然后使用 Azure AD powershell 運行腳本(在彈出窗口輸入Office365全局管理員賬號密碼 )
5. 使用Azure Active Directory為外部本地Exchange HTTP端點注冊所有主機名頒發機構
在此步驟中,您必須為每一臺發布到公網的本地Exchange服務器運行此腳本,建議使用通配符,例:假設可通過 https://mail.contoso.com/ews/exchange.asmx從外部訪問Exchange。在這種情況下,就可以使用 *.contoso.com,可以涵蓋autodiscover.contoso.com和mail.contoso.com端點。不過,不會涵蓋頂級域contoso.com,如果Exchange 2013客戶端訪問服務器可通過頂級主機名頒發機構從外部訪問,則您必須也將該主機名頒發機構注冊為contoso.com.
將以下腳本保存為 RegisterEndpoints.ps1
$externalAuthority="*.contoso.com"
$ServiceName = "00000002-0000-0ff1-ce00-000000000000";
$p = Get-MsolServicePrincipal –ServicePrincipalName $ServiceName;
$spn = [string]::Format("{0}/{1}", $ServiceName, $externalAuthority);
$p.ServicePrincipalNames.Add($spn);
Set-MsolServicePrincipal –ObjectID $p.ObjectId –ServicePrincipalNames $p.ServicePrincipalNames;
在Azure AD PowerShell當中運行腳本:
6. 創建從本地到Office365的IntraOrganizationConnector
在本地Exchange PowerShell運行以下命令:
New-IntraOrganizationConnector -name ExchangeHybridOnPremisesToOnline -DiscoveryEndpoint https://partner.outlook.cn/autodiscover/autodiscover.svc-TargetAddressDomains <contoso.partner.mail.onmschina.cn>
驗證
7. 創建從Office365到本地的IntraOrganizationConnector
首先將Windows PowerShell連接到Exchange online(步驟https://technet.microsoft.com/en-us/library/jj984289(v=exchg.160).aspx), 然后運行以下命令:
New-IntraOrganizationConnector -name ExchangeHybridOnlineToOnPremises -DiscoveryEndpoint https://autodiscover.contoso.com/autodiscover/autodiscover.svc-TargetAddressDomains contoso.com
驗證配置:
8. 為Exchange 2013 SP1之前的服務器配置AvailabilityAddressSpace
如果您本地有Exchange 2013 SP1之前版本的Exchange服務器,如Exchange 2010,請先確保您為這些服務器安裝了最新的RU補丁,然后配置如下的Address Space
Add-AvailabilityAddressSpace -AccessMethod InternalProxy –ProxyUrl <your on-premises External Web Services URL> -ForestName <your Office 365 service target address> -UseServiceAccount $True
驗證配置
現在,您已配置完成,可以用以下步驟驗證OAuth
在 Exchange 2013 server, 運行以下命令:
Test-OAuthConnectivity -Service EWS -TargetUri https://partner.outlook.cn/ews/exchange.asmx-Mailbox <On-Premises Mailbox> -Verbose | fl
驗證結果輸出為Success
2. 在Exchange Online PowerShell當中,運行以下命令:
Test-OAuthConnectivity -Service EWS -TargetUri <external hostname authority of your Exchange On-Premises deployment>/metadata/json/1 -Mailbox <Exchange Online Mailbox> -Verbose | fl
現在,您可以測試Free/Busy忙/閑信息共享是否工作正常(例:本地郵箱可以看O365郵箱的日歷忙/閑,O365郵箱可以看本地郵箱的日歷忙閑信息)