Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ПРИМЕНИМО К:
2015
2019
Subscription Edition
Интеграция служб Microsoft Teams с локальными Exchange Server включает функцию календаря Teams и интеграцию облачная голосовая почта для почтовых ящиков, размещенных в Exchange Server (локально). Дополнительные сведения см. в документации по взаимодействию Exchange и Microsoft Teams .
Этот раздел относится к интеграции с любой поддерживаемой версией Exchange Server. Проверьте матрицу поддержки Exchange Server, чтобы узнать, какие версии Exchange Server находятся в поддерживаемом состоянии.
Что нужно знать перед началом работы?
Предполагаемое время выполнения этой задачи: 15 минут
Перед выполнением этих процедур вы должны получить разрешения. Сведения о необходимых разрешениях см. в разделе Разрешения инфраструктуры Exchange и оболочки .
Сведения о сочетаниях клавиш, которые могут применяться к процедурам, описанным в этом разделе, см. в разделе Сочетания клавиш в Центре администрирования Exchange.
Сведения о совместимости см. в разделе Skype для бизнеса совместимости с приложениями Office.
Настройка интеграции между Exchange Server и O365
Шаг 1. Настройка проверки подлинности OAuth между Exchange Server и Exchange Online
Выполните действия, описанные в документации по настройке проверки подлинности OAuth между Exchange Server и Exchange Online.
Шаг 2. Создание учетной записи почтового пользователя, используемой партнерскими приложениями
Этот шаг необходимо выполнить на сервере Exchange Server. Он создает почтового пользователя и назначает необходимые разрешения роли управления. Эта учетная запись будет использоваться на следующем шаге для предоставления партнерскому приложению необходимых разрешений.
Укажите проверенный домен для организации Exchange. Этот домен должен быть тем же доменом, который используется в качестве основного домена SMTP, используемого для локальных учетных записей Exchange. Этот домен называется в <your Verified Domain> следующей процедуре.
$user = New-MailUser -Name "TeamsIntegration-ApplicationAccount" -ExternalEmailAddress "TeamsIntegration-ApplicationAccount@<your Verified Domain>"
Set-MailUser -Identity $user.UserPrincipalName -HiddenFromAddressListsEnabled $true
Создайте новую роль управления на UserApplication основе роли:
New-ManagementRole -Name "TeamsIntegrationRole" -Parent "UserApplication"
Удалите все записи ролей из новой роли управления, кроме GetDelegate, , , GetUserOofSettingsDeleteItem, UpdateItemGetAttachment и ConvertId: FindItem
$roleEntries = @("GetDelegate", "FindItem", "GetUserOofSettings", "DeleteItem", "UpdateItem", "GetAttachment", "ConvertId")
Get-ManagementRoleEntry "TeamsIntegrationRole\*" | Where-Object { $roleEntries -notcontains $_.Name } | ForEach-Object { Remove-ManagementRoleEntry -Identity "TeamsIntegrationRole\$($_.Name)" -Confirm:$false }
Назначьте TeamsIntegrationRole роль только что созданной учетной записи:
New-ManagementRoleAssignment -Role "TeamsIntegrationRole" -User $user.UserPrincipalName
Шаг 3. Создание и включение партнерского приложения для интеграции службы планировщика календарей Teams
Чтобы включить делегирование календаря для пользователей в Exchange Server (локальной среде), необходимо настроить выделенное партнерское Teams Calendar Scheduler Serviceприложение для .
Для этого создайте новое партнерское приложение для , Teams Calendar Scheduler Service выполнив следующую команду в командной консоли Exchange (EMS) на локальном сервере Exchange Server:
New-PartnerApplication -Name "TeamsScheduler" -ApplicationIdentifier "7557eb47-c689-4224-abcf-aef9bd7573df" -Enabled $true -LinkedAccount $user.UserPrincipalName
Шаг 4. Создание и включение партнерского приложения для интеграции облачная голосовая почта
Чтобы включить облачная голосовая почта для пользователей в локальной среде, необходимо настроить выделенное партнерское приложение для Cloud Voicemail.
Для этого создайте новое партнерское приложение для Cloud Voicemail , выполнив следующую команду в командной консоли Exchange (EMS) на локальном сервере Exchange Server:
New-PartnerApplication -Name "CloudVoicemail" -ApplicationIdentifier "db7de2b5-2149-435e-8043-e080dd50afae" -Enabled $true -LinkedAccount $user.UserPrincipalName
Шаг 5. Экспорт сертификата проверки подлинности Exchange Server
Запустите сценарий PowerShell, чтобы экспортировать открытый ключ сертификата проверки подлинности Exchange Server, который вы импортируете в организацию Microsoft Teams на следующем шаге.
Сохраните следующий текст в файл скрипта PowerShell с именем , например ExportAuthCert.ps1.
$thumbprint = (Get-AuthConfig).CurrentCertificateThumbprint
if((Test-Path $env:SYSTEMDRIVE\OAuthConfig) -eq $false)
{
New-Item -Path $env:SYSTEMDRIVE\OAuthConfig -Type Directory
}
Set-Location -Path $env:SYSTEMDRIVE\OAuthConfig
$oAuthCert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.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 в локальной организации Exchange выполните созданный сценарий PowerShell. Пример: .\ExportAuthCert.ps1
Шаг 6. Отправка сертификата проверки подлинности Exchange Server
Затем используйте модуль Microsoft Graph PowerShell для отправки локального сертификата проверки подлинности, экспортированного на предыдущем шаге, в службы Microsoft Entra контроль доступа (ACS). Если модуль не установлен, откройте окно Windows PowerShell от имени администратора и выполните следующую команду:
Install-Module -Name Microsoft.Graph.Applications
Откройте рабочую область Windows PowerShell с установленными командлетами Microsoft Graph. Все команды на этом шаге должны выполняться с помощью Windows PowerShell, подключенного к консоли Microsoft Graph.
Сохраните следующий текст в файл скрипта PowerShell с именем , например
UploadAuthCert.ps1.Connect-MgGraph -Scopes Application.ReadWrite.All $certFile = "$env:SYSTEMDRIVE\OAuthConfig\OAuthCert.cer" $objFSO = New-Object -ComObject Scripting.FileSystemObject $certFile = $objFSO.GetAbsolutePathName($certFile) $cer = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($certFile) $binCert = $cer.GetRawCertData() $credValue = [System.Convert]::ToBase64String($binCert) $serviceNames = @("db7de2b5-2149-435e-8043-e080dd50afae", "7557eb47-c689-4224-abcf-aef9bd7573df") foreach ($serviceName in $serviceNames) { Write-Host "[+] Trying to query the service principals for service: $serviceName" -ForegroundColor Cyan $p = Get-MgServicePrincipal -Filter "AppId eq '$serviceName'" Write-Host "[+] Trying to query the keyCredentials for service: $serviceName" -ForegroundColor Cyan $servicePrincipalKeyInformation = Get-MgServicePrincipal -Filter "AppId eq '$serviceName'" -Select "keyCredentials" $keyCredentialsLength = $servicePrincipalKeyInformation.KeyCredentials.Length if ($keyCredentialsLength -gt 0) { Write-Host "[+] $keyCredentialsLength existing key(s) found - we keep them if they have not expired" -ForegroundColor Cyan $newCertAlreadyExists = $false $servicePrincipalObj = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphServicePrincipal $keyCredentialsArray = @() foreach ($cred in $servicePrincipalKeyInformation.KeyCredentials) { $thumbprint = [System.Convert]::ToBase64String($cred.CustomKeyIdentifier) Write-Host "[+] Processing existing key: $($cred.DisplayName) thumbprint: $thumbprint" -ForegroundColor Cyan if ($newCertAlreadyExists -ne $true) { $newCertAlreadyExists = ($cer.Thumbprint).Equals($thumbprint, [System.StringComparison]::OrdinalIgnoreCase) } if ($cred.EndDateTime -lt (Get-Date)) { Write-Host "[+] This key has expired on $($cred.EndDateTime) and will not be retained" -ForegroundColor Yellow continue } $keyCredential = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphKeyCredential $keyCredential.Type = "AsymmetricX509Cert" $keyCredential.Usage = "Verify" $keyCredential.Key = $cred.Key $keyCredentialsArray += $keyCredential } if ($newCertAlreadyExists -eq $false) { Write-Host "[+] New key: $($cer.Subject) thumbprint: $($cer.Thumbprint) will be added" -ForegroundColor Cyan $keyCredential = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphKeyCredential $keyCredential.Type = "AsymmetricX509Cert" $keyCredential.Usage = "Verify" $keyCredential.Key = [System.Text.Encoding]::ASCII.GetBytes($credValue) $keyCredentialsArray += $keyCredential $servicePrincipalObj.KeyCredentials = $keyCredentialsArray Update-MgServicePrincipal -ServicePrincipalId $p.Id -BodyParameter $servicePrincipalObj } else { Write-Host "[+] New key: $($cer.Subject) thumbprint: $($cer.Thumbprint) already exists and will not be uploaded again" -ForegroundColor Yellow } } else { $params = @{ type = "AsymmetricX509Cert" usage = "Verify" key = [System.Text.Encoding]::ASCII.GetBytes($credValue) } Write-Host "[+] This is the first key which will be added to this service principal" -ForegroundColor Cyan Update-MgServicePrincipal -ServicePrincipalId $p.Id -KeyCredentials $params } }Запустите сценарий PowerShell, созданный на предыдущем шаге. Пример:
.\UploadAuthCert.ps1После запуска сценария появится диалоговое окно для ввода учетных данных. Введите учетные данные для учетной записи администратора клиента в организации Microsoft Online Microsoft Entra. После выполнения скрипта оставьте Windows PowerShell, подключенный к сеансу Microsoft Graph, открытым. На следующем шаге вы будете использовать сеанс для запуска скрипта PowerShell.
Шаг 7. Убедитесь, что сертификат был отправлен сторонним субъектам-службам
В сеансе PowerShell, подключенном к Microsoft Graph, выполните следующую команду:
(Get-MgServicePrincipal -Filter "AppId eq '7557eb47-c689-4224-abcf-aef9bd7573df'" -Select "keyCredentials").KeyCredentials | Format-List * (Get-MgServicePrincipal -Filter "AppId eq 'db7de2b5-2149-435e-8043-e080dd50afae'" -Select "keyCredentials").KeyCredentials | Format-List *Убедитесь, что отображается ключ с датами начала и окончания, которые соответствуют датам начала и окончания сертификата OAuth Exchange.
Шаг 8. Проверка успешности
Проверьте правильность конфигурации, убедившись, что некоторые функции работают успешно.
Проверка функциональности облачная голосовая почта в гибридной конфигурации Exchange
- Активация
Automatic repliesв почтовом ящике, размещенном в Exchange Server (локальной среде), с помощью Outlook в Интернете (OWA) или Outlook Desktop - Откройте
Teams, перейдите кManage out-of-office voicemailSettings>Calls>и проверкаWhen Outlook automatic replies are on - Введите пользовательское приветственное сообщение в
Your custom greetingполе - Вызов в Teams для этого пользователя
- Оставить сообщение голосовой почты
- Прослушайте приветствие во время звонка:
- Если приложение CloudVoicemail Partner работает, вы услышите пользовательское приветствие "Вне офиса"
- Если это не работает, вместо этого будет воспроизводиться обычное приветствие.
- После вызова проверка, успешно ли доставлено сообщение голосовой почты в почтовый ящик пользователя.
- Активация
Убедитесь, что журнал бесед для мобильных клиентов отображается в папке Outlook
Conversation History.Убедитесь, что архивные сообщения чата помещаются в локальный почтовый ящик пользователя в папке
Purgesс помощью EWSEditor.Кроме того, можно проверить трафик во время подтверждения OAuth. Трафик OAuth отличается и не похож на обычную проверку подлинности. Ключевым индикатором является наличие идентификаторов издателя в обмене маркерами, например:
7557eb47-c689-4224-abcf-aef9bd7573df@<realm>db7de2b5-2149-435e-8043-e080dd50afae@<realm>
Эти идентификаторы также могут отображаться с начальной косой чертой, например:
/7557eb47-c689-4224-abcf-aef9bd7573df@<realm>. Эти маркеры не включают имя пользователя или пароль, что подчеркивает основной принцип OAuth: проверка подлинности без обмена учетными данными.Если вы хотите убедиться, что успешно используете OAuth, убедитесь, что вы знаете, чего ожидать и как должен выглядеть трафик. Так что вот чего ожидать.
Ниже приведен пример настройки, но вы можете использовать любое средство трассировки сети, чтобы выполнить этот процесс.
Шаг 9. Отключение или удаление устаревшего приложения Skype для бизнеса Online
Устаревшее стороннее Skype for Business Online приложение с идентификатором 00000004-0000-0ff1-ce00-000000000000приложения будет постепенно отключается с 13 октября 2025 г. В рамках этих усилий было представлено специальное приложение для службы планировщика календарей Teams и облачная голосовая почта.
Выполните действия, описанные в этом разделе, чтобы отключить любое партнерское приложение, использующее устаревшее стороннее Skype for Business Online приложение:
Get-PartnerApplication | Where-Object { $_.ApplicationIdentifier -eq "00000004-0000-0ff1-ce00-000000000000" -and $_.Enabled -eq $true } | Set-PartnerApplication -Enabled $false
Если вы хотите удалить устаревшее партнерское Skype for Business Online приложение, можно выполнить следующую команду:
Get-PartnerApplication | Where-Object { $_.ApplicationIdentifier -eq "00000004-0000-0ff1-ce00-000000000000" -and $_.Enabled -eq $true } | Remove-PartnerApplication
Статьи по теме
Настройка проверки подлинности OAuth между Exchange и Exchange Online организациями