为 Skype for Business Server 混合环境配置服务器到服务器身份验证。

总结: 为 Skype for Business Server 混合环境配置服务器到服务器身份验证。

在混合配置中,某些用户驻留在本地安装 Skype for Business Server。 其他用户驻留在 Microsoft 365 或 Office 365 版本的 Skype for Business Server 上。 若要在混合环境中配置服务器到服务器身份验证,必须首先将 Skype for Business Server 的本地安装配置为信任授权服务器。 此过程中的初始步骤可以通过运行以下 Skype for Business Server 命令行管理程序脚本来执行:

$TenantID = (Get-CsTenant -Filter {DisplayName -eq "Fabrikam.com"}).TenantId

$sts = Get-CsOAuthServer microsoft.sts -ErrorAction SilentlyContinue

   if ($sts -eq $null)
      {
         New-CsOAuthServer microsoft.sts -MetadataUrl "https://accounts.accesscontrol.windows.net/$TenantId/metadata/json/1"
      }
   else
      {
         if ($sts.MetadataUrl -ne  "https://accounts.accesscontrol.windows.net/$TenantId/metadata/json/1")
            {
               Remove-CsOAuthServer microsoft.sts
               New-CsOAuthServer microsoft.sts -MetadataUrl "https://accounts.accesscontrol.windows.net/$TenantId/metadata/json/1"
            }
        }

$exch = Get-CsPartnerApplication microsoft.exchange -ErrorAction SilentlyContinue

if ($exch -eq $null)
   {
      New-CsPartnerApplication -Identity microsoft.exchange -ApplicationIdentifier 00000002-0000-0ff1-ce00-000000000000 -ApplicationTrustLevel Full -UseOAuthServer
    }
else
    {
       if ($exch.ApplicationIdentifier -ne "00000002-0000-0ff1-ce00-000000000000")
          {
             Remove-CsPartnerApplication microsoft.exchange
             New-CsPartnerApplication -Identity microsoft.exchange -ApplicationIdentifier 00000002-0000-0ff1-ce00-000000000000 -ApplicationTrustLevel Full -UseOAuthServer 
          }
       else
          {
             Set-CsPartnerApplication -Identity microsoft.exchange -ApplicationTrustLevel Full -UseOAuthServer
          }
   }

Set-CsOAuthConfiguration -ServiceName 00000004-0000-0ff1-ce00-000000000000

请记住,租户的领域名称通常与组织名称不同;实际上,领域名称几乎始终与租户 ID 相同。 因此,脚本中的第一行用于返回指定租户 (的 TenantId 属性的值,在这种情况下,fabrikam.com) 然后将该名称分配给变量$TenantId:

$TenantID = (Get-CsTenant -Filter {DisplayName -eq "Fabrikam.com"}).TenantId

若要执行此脚本,必须已安装 Skype for Business Online PowerShell 模块,并使用此模块连接到租户。 如果尚未安装这些 cmdlet,脚本将失败,因为 Get-CsTenant cmdlet 将不可用。 脚本完成后,必须配置 Skype for Business Server 与授权服务器之间的信任关系,以及 Exchange 2013/2016 与授权服务器之间的第二个信任关系。 这只能使用 Microsoft Online Services cmdlet 来完成。

注意

如果尚未安装 Microsoft Online Services cmdlet,则需要使用 cmdlet install-module MSOnline从 PowerShell 存储库安装它。 有关安装和使用 Microsoft Online Services 模块的详细信息,请参阅 Microsoft 365 网站。 这些说明还将介绍如何在 Microsoft 365 或 Office 365 与 Active Directory 之间配置单一登录、联合和同步。

配置 Microsoft 365 或 Office 365 后,以及为 Skype for Business Server 和 Exchange 2013 创建 Microsoft 365 或 Office 365 服务主体后,需要向这些服务主体注册凭据。 若要注册凭据,必须首先获取保存为 的 X.509 Base64 证书。CER 文件。 然后,此证书将应用于 Microsoft 365 或 Office 365 服务主体。

注意

Azure AD Powershell 计划于 2024 年 3 月 30 日弃用。 若要了解详细信息,请阅读 弃用更新

建议迁移到 Microsoft Graph PowerShell ,以与 Microsoft Entra ID (以前的 Azure AD) 交互。 Microsoft Graph PowerShell 允许访问所有 Microsoft Graph API,可在 PowerShell 7 上使用。 有关常见迁移查询的解答,请参阅 迁移常见问题解答

获取 X.509 证书后,打开 PowerShell 控制台并导入 Microsoft Online Windows PowerShell 模块,其中包含可用于管理服务主体的 cmdlet:

Import-Module MSOnline

导入模块时,键入以下命令,然后按 Enter:

Connect-MsolService

按 Enter 后,随即出现一个凭据对话框。 在对话框中输入 Microsoft 365 或 Office 365 用户名和密码,然后选择“确定”。

连接到 Microsoft 365 或 Office 365 后,即可运行以下命令以返回有关服务主体的信息:

Get-MsolServicePrincipal

您应获得与以下信息类似的所有服务主体的相关信息:

ExtensionData        : System.Runtime.Serialization.ExtensionDataObject
AccountEnabled       : True
Addresses            : {}
AppPrincipalId       : 00000004-0000-0ff1-ce00-000000000000
DisplayName          : Skype for Business Server
ObjectId             : aada5fbd-c0ae-442a-8c0b-36fec40602e2
ServicePrincipalName : SkypeForBusinessServer/litwareinc.com
TrustedForDelegation : True

下一步是导入、编码和分配 X.509 证书。 若要导入证书并对其进行编码,请使用以下 Windows PowerShell 命令,确保指定 到 的完整文件路径。调用 Import 方法时的 CER 文件:

$certificate = New-Object System.Security.Cryptography.X509Certificates.X509Certificate
$certificate.Import("C:\Certificates\Office365.cer")
$binaryValue = $certificate.GetRawCertData()
$credentialsValue = [System.Convert]::ToBase64String($binaryValue) 

导入并编码证书后,可以将证书分配给 Microsoft 365 或 Office 365 服务主体。 为此,请先使用 Get-MsolServicePrincipal 检索 Skype for Business Server 和 Microsoft Exchange 服务主体的 AppPrincipalId 属性的值;AppPrincipalId 属性的值将用于标识要分配证书的服务主体。 有了 Skype for Business Server 的 AppPrincipalId 属性值,请使用以下命令将证书分配给 Skype For Business Online 版本:

New-MsolServicePrincipalCredential -AppPrincipalId 00000004-0000-0ff1-ce00-000000000000 -Type Asymmetric -Usage Verify -Value $credentialsValue 

然后,应重复此命令,这次使用 Exchange 2013 的 AppPrincipalId 属性值。

如果以后需要删除该证书(例如,如果证书已过期),可以先检索证书的 KeyId:

Get-MsolServicePrincipalCredential -AppPrincipalId 00000004-0000-0ff1-ce00-000000000000

此命令将返回与以下内容类似的数据:

Type      : Asymmetric
Value     : 
KeyId     : bc2795f3-2387-4543-a95d-f92c85c7a1b0
StartDate : 6/1/2012 8:00:00 AM
EndDate   : 5/31/2013 8:00:00 AM
Usage     : Verify

然后,您可以使用与以下内容类似的命令删除该证书:

Remove-MsolServicePrincipalCredential -AppPrincipalId 00000004-0000-0ff1-ce00-000000000000 -KeyId bc2795f3-2387-4543-a95d-f92c85c7a1b0

除了分配证书外,还必须配置 Exchange Online 服务主体,并将本地版本的 Skype for Business Server 外部 Web 服务 URL 配置为 Microsoft 365 或 Office 365 服务主体。 可通过执行下面两条命令达到此目的。

在以下示例中,Pool1ExternalWebFQDN.contoso.com 是 Skype for Business Server 池的外部 Web 服务 URL。 应重复这些步骤,以在部署中添加所有外部 Web 服务 URL。

Set-MSOLServicePrincipal -AppPrincipalID 00000002-0000-0ff1-ce00-000000000000 -AccountEnabled $true
$lyncSP = Get-MSOLServicePrincipal -AppPrincipalID 00000004-0000-0ff1-ce00-000000000000
$lyncSP.ServicePrincipalNames.Add("00000004-0000-0ff1-ce00-000000000000/Pool1ExternalWebFQDN.contoso.com")
Set-MSOLServicePrincipal -AppPrincipalID 00000004-0000-0ff1-ce00-000000000000 -ServicePrincipalNames $lyncSP.ServicePrincipalNames