Product Documentation

用于 Office 365 的基于证书的身份验证

Mar 06, 2018

Secure Mail 支持对 Office 365 使用基于证书的身份验证(又称为基于客户端的身份验证)。使用 iOS 和 Android 设备的 Secure Mail 用户在连接到 Office 365 时可以利用基于证书的身份验证。登录到 Secure Mail 时,用户通过客户端证书进行身份验证,而非通过键入其凭据进行身份验证。本文探讨如何为 Office 365 配置基于证书的身份验证。

Secure Mail 中对基于证书的身份验证的支持存在于本地 Exchange 配置中。如果您已在 XenMobile 中设置基于证书的身份验证,现在可以在 Windows Server 上配置 Exchange Online、Azure Active Directory 和 Active Directory Federation Services (ADFS)。之后,使用 Secure Mail 10 及更高版本的用户可以利用基于证书的身份验证连接到其 Office 365 帐户。

如果尚未在 XenMobile 中配置基于证书的身份验证,首先必须在 XenMobile 控制台中启用该功能。有关详细信息,请参阅客户端证书或证书加域身份验证。然后,您在 Windows Server 上为 Exchange Online、Azure AD 和 ADFS 启用基于证书的身份验证。

本文中的过程假定您已在 XenMobile Server 中启用基于证书的身份验证。

下图显示了基于证书的身份验证中涉及的组件的集成方式。

localized image

必备条件

1. 在 XenMobile 控制台中配置 PKI 实体时从证书颁发机构 (CA) 生成的证书 (X.509) 的副本。

  • 该 CA 必须具有能够通过 URL 引用的证书吊销列表 (CRL)。
  • 在证书的使用者备用名称字段中,在 RFC822 名称主体名称值中包括用户的电子邮件地址。例如,请参见下图。
localized image

以下步骤显示了如何在 Windows Server 上为 Exchange Online、Azure AD 和 ADFS 配置基于证书的身份验证。

本文总结了 Microsoft 提供的配置指南。如果您在执行配置 Microsoft 组件的步骤时遇到问题,我们建议您查阅 Microsoft 文档以了解详细信息。

启用 Exchange Online

Microsoft Exchange Online 使用 Office 365 租户的新式身份验证功能。这些功能启用使用智能卡的多重身份验证 (MFA)、基于证书的身份验证和第三方 SAML 身份提供程序等身份验证功能。默认情况下,新式身份验证在 Exchange Online 中未启用。要启用新式身份验证,请执行以下操作。

1. 连接到 Exchange Online PowerShell。有关详细信息,请参阅 Microsoft 文档
2. 运行以下命令。

命令 复制

Set-OrganizationConfig -OAuth2ClientProfileEnabled $true

3. 要验证更改是否成功,请运行以下命令。

命令 复制

Get-OrganizationConfig | Format-Table -Auto Name,OAuth*

配置 Azure AD

Exchange Online 在请求中向 Azure AD 发送 prompt=login 命令。默认情况下,Azure AD 在向 ADFS 发送的请求中将此命令转换为 wauth=usernamepassworduri

默认情况下,Azure AD 提示 ADFS 执行 U/P 身份验证。Azure AD 还会发送命令 wfresh=0,该命令提示 Azure ADD 忽略单点登录 (SSO) 状态以及执行全新身份验证。

1. 更改默认的 Azure AD 设置 PromptLoginBehavior 行为。

a. l连接到 Office 365 PowerShell。有关详细信息,请参阅 Microsoft 文档
b. 在 Office 365 PowerShell 中运行以下命令。注意:该域与邮件服务器域相同。

命令 复制

Set-MSOLDomainFederationSettings -domainname <domain> -PromptLoginBehavior Disabled

2. 在 Azure AD 中配置证书颁发机构。上载根证书的公共部分,如上文必备条件列表中所述。

a. 连接到 Azure AD PowerShell。有关详细信息,请参阅 Microsoft 文档
b. 在 Azure AD PowerShell 中运行下面一组命令。.cer 文件仅在计算机本地提供。

命令 复制

$cert=Get-Content -Encoding byte "[LOCATION OF THE CER FILE]"

$new_ca=New-Object -TypeName Microsoft.Open.AzureAD.Model.CertificateAuthorityInformation

$new_ca.AuthorityType=0

$new_ca.TrustedCertificate=$cert

New-AzureADTrustedCertificateAuthority -CertificateAuthorityInformation $new_ca

3. 在 Azure AD 中配置吊销。

要吊销客户端证书,Azure AD 应从作为 CA 信息的一部分上载的 URL 中提取并缓存证书吊销列表 (CRL)。CRL 中的上次发布时间戳(有效日期属性)用于确保该 CRL 仍旧有效。CRL 将定期引用以吊销对包含在该列表中的证书的访问权限。要确保吊销仍然存在,必须将 CRL 的生效日期设置为晚于通过 StsRefreshTokenValidFrom 设置的值。

此外,还请确保有问题的证书在 CRL 中。以下步骤概述了通过设置 StsRefreshTokenValidFrom 字段更新和验证授权令牌的过程。

a. 连接到 MSOL 服务。有关详细信息,请参阅 Microsoft 文档
b. 通过运行以下命令检索有效用户的当前 StsRefreshTokensValidFrom 值。

命令 复制

$user = Get-MsolUser -UserPrincipalName test@yourdomain.com

$user.StsRefreshTokensValidFrom

c. 通过运行以下命令将用户的新 StsRefreshTokensValidFrom 值配置为等于当前时间戳。

命令 复制

Set-MsolUser -UserPrincipalName test@yourdomain.com -StsRefreshTokensValidFrom ("03/15/2017")

设置的日期必须是将来的日期。如果日期不在将来,则表示未设置 StsRefreshTokensValidFrom 属性。如果日期在将来,StsRefreshTokensValidFrom 设置为当前时间(而非通过 Set-MsolUser 命令指示的日期)。

配置 ADFS

完成两个主要步骤即可配置 ADFS。

  • 启用证书作为身份验证方法。
  • 配置 ADFS 令牌中的声明。

1. 启用证书作为身份验证方法。

a. 打开 ADFS 管理控制台并导航到服务 > 身份验证方法 > 编辑主身份验证方法

localized image

b. 在 Extranet 中,选中证书身份验证复选框。

c. 在 Intranet 中,有选择地选中证书身份验证复选框。

您的大多数使用证书身份验证的设备可能仅来自 Extranet。因此,“Intranet 选择”为可选项。

localized image

2. 配置 ADFS 令牌中的声明。

Azure AD 向 ADFS 发送颁发者和序列号,以便 ADFS 在不同的访问场景中能够撤消或拒绝身份验证。例如,如果设备丢失或被盗,管理员可以更新 CRL。然后,Azure AD 使用证书身份验证吊销访问权限。要配置声明,请执行以下操作。

a. 导航到服务 > 声明说明 > 添加声明说明

localized image

b. 在“Active Directory 声明提供程序信任”中,添加以下两条规则。这些规则指示 ADFS 允许 Active Directory 用户在进行身份验证时使用直通方法。

命令 复制

Serial Number of the Client Certificate - http://schemas.microsoft.com/ws/2008/06/identity/claims/<serialnumber>
 
Issuer of the client certificate - http://schemas.microsoft.com/2012/12/certificatecontext/field/<issuer>

下图是已填写的字段示例。

localized image
localized image