Active Directory 联合身份验证服务 (AD FS) 提供了简便而安全的联合身份验证和 Web 单一登录 (SSO) 功能。 与 Microsoft Entra ID 和 Microsoft 365 联合的用户可以使用本地凭据进行身份验证,以访问所有云资源。 因此,部署必须具有高度可用的 AD FS 基础结构,以确保对本地和云中资源的访问。
在 Azure 中部署 AD FS 可以帮助轻松实现高可用性。 在 Azure 中部署 AD FS 有几个优点:
Azure 可用性集的强大功能为你提供了高度可用的基础结构。
部署易于缩放。 如果需要更高的性能,可以使用 Azure 中的简化部署过程轻松迁移到功能更强大的计算机。
Azure 异地冗余可确保基础结构在全球范围内高度可用。
Azure 门户通过高度简化的管理选项使基础结构更易于管理。
下图显示了在 Azure 中部署 AD FS 基础结构的建议基本拓扑。
我们建议网络拓扑遵循以下一般原则:
在单独的服务器上部署 AD FS,以避免影响域控制器的性能。
必须部署 Web 应用程序代理 (WAP) 服务器,以便用户在不在公司网络上时可以访问 AD FS。
应在非管制区域 (DMZ) 中设置 Web 应用程序代理服务器,并且仅允许 DMZ 和内部子网之间的 TCP/443 访问。
为了确保 AD FS 和 Web 应用程序代理服务器的高可用性,建议对 AD FS 服务器使用内部负载均衡器,对 Web 应用程序代理服务器使用 Azure 负载均衡器。
要为 AD FS 部署提供冗余,建议将两个或更多虚拟机 (VM) 分组到一个可用性集中,以用于类似的工作负载。 此配置可确保在计划内或计划外维护事件期间至少有一个 VM 可用。
应在单独的 DMZ 网络中部署 Web 应用程序代理服务器。 可以将一个虚拟网络划分为两个子网,然后在隔离的子网中部署 Web 应用程序代理服务器。 可以为每个子网配置网络安全组设置,并仅允许两个子网之间的所需通信。
创建网络时,可以在同一虚拟网络中创建两个子网,也可以创建两个不同的虚拟网络。 建议使用单网络方法,因为创建两个单独的虚拟网络还需要创建两个用于通信目的的单独虚拟网络网关。
创建虚拟网络
创建虚拟网络:
使用 Azure 帐户登录到
Azure 门户
。
在门户中,搜索并选择“
虚拟网络
”。
在“虚拟网络”页面上,选择“+ 创建”。
在
创建虚拟网络
中,转到
基本信息
选项卡,并配置以下设置:
在
项目详细信息
下配置以下设置:
对于
订阅
,请选择订阅的名称。
对于
资源组
,请选择现有资源组的名称,或选择
新建
以创建新资源组。
为
实例详细信息
配置以下设置:
对于
虚拟网络名称
,请输入虚拟网络的名称。
对于
区域
,请选择要在其中创建虚拟网络的区域。
保护虚拟网络
网络安全组 (NSG) 包含一系列访问控制列表 (ACL) 规则,这些规则可以允许或拒绝虚拟网络中流向 VM 实例的网络流量。 可将 NSG 与任一子网或该子网内的单个 VM 实例关联。 当 NSG 与子网关联时,ACL 规则将应用于该子网中的所有 VM 实例。
与子网关联的 NSG 会自动包含一些默认的入站和出站规则。 无法删除默认安全规则,但可以使用更高优先级的规则将其覆盖。 此外,可以根据所需的安全级别添加更多入站和出站规则。
现在,将几个规则添加到两个安全组中的每一个。 对于第一个示例,将入站安全规则添加到
NSG_INT
安全组。
在虚拟网络的
子网
页上,选择
NSG_INT
。
在左侧,选择“
入站安全规则
”,然后选择“
+ 添加
”。
在
添加入站安全规则
中,使用以下信息配置规则:
对于“
源
”,输入
10.0.1.0/24
。
对于
源端口范围
,如果不想允许流量,请将其留空;或者如果选择星号 (*),则允许任何端口上的流量。
对于
目标
,请输入
10.0.0.0/24
。
对于
服务
,选择
HTTPS
。 根据选择的服务,该服务会自动填充
目标端口范围
和
协议
的信息字段。
对于“操作”,请选择“允许”。
对于
优先级
,请输入
1010
。
对于
名称
,请输入
AllowHTTPSFromDMZ
。
有关
说明
,请输入
允许来自 DMZ 的 HTTPS 通信
。
完成后,选择
添加
。
新的入站安全规则现已添加到
NSG_INT
规则列表的顶部。
对下表中显示的值重复这些步骤。 除了创建的新规则之外,还必须按列出的优先级顺序添加以下额外规则,以帮助保护内部子网和 DMZ 子网。
ExpressRoute
如果组织不需要点到站点连接或虚拟网络站点到站点连接,建议使用 ExpressRoute。 使用 ExpressRoute,可在 Azure 数据中心与本地环境或共同租用环境中的基础结构之间创建专用连接。 ExpressRoute 连接也不连接到公共 Internet,这使得它们更可靠、更快、更安全。 有关详细了解 ExpressRoute 以及如何使用 ExpressRoute 的各种连接选项,请阅读
ExpressRoute technical overview
(ExpressRoute 技术概述)。
创建可用性集
对于每个角色(DC/AD FS 和 WAP),请创建至少包含两台计算机的可用性集。 此配置有助于提高每个角色的可用性。 在创建可用性集时,必须决定要使用以下哪个域:
在容错域中,VM 共享相同的电源和物理网络交换机。 建议至少使用两个容错域。 默认值为
2
,可以按原样保留此部署。
在更新域中,计算机在更新期间一起重启。 建议至少两个更新域。 默认值为
5
,可以按原样保留此部署。
若要创建可用性集,请执行以下操作:
在Azure 门户中搜索并选择
可用性集
,然后选择
+ 创建
。
在
创建可用性集
中,转到
基本信息
选项卡,然后输入以下信息:
在“项目详细信息”下
:
对于
订阅
,请选择订阅的名称。
对于
资源组
,请选择现有资源组,或选择
新建
以创建新资源组。
在“实例详细信息”下:
对于
名称
,输入可用性集的名称。 对于此示例,请输入
contosodcset
。
对于
区域
,选择要使用的区域。
对于
容错域
,请将其保留为默认值
2
。
对于
更新域
,请将其保留为默认值
5
。
对于
使用托管磁盘
,请在此示例中选择
否(经典)
。
这些设置未指定 NSG,因为 Azure 允许在子网级别使用 NSG。 可以使用与子网或网络接口卡 (NIC) 对象关联的单个 NSG 来控制计算机网络流量。 有关详细信息,请参阅
什么是网络安全组 (NSG)
。
如果要管理 DNS,建议使用静态 IP 地址。 可以使用 Azure DNS,并通过域的 DNS 记录中的 Azure FQDN 来引用新计算机。 有关详细信息,请参阅
将专用 IP 地址更改为静态
。
虚拟机
页应在部署完成后显示所有四个 VM。
若要对任何传入请求进行身份验证,AD FS 需要联系 DC。 若要节省从 Azure 到本地 DC 的开销,以便进行身份验证,建议在 Azure 中部署 DC 的副本。 为了获得高可用性,最好创建至少两个 DC 的可用性集。
使用 ILB 更新 DNS 服务器
使用内部 DNS 服务器为 ILB 创建 A 记录。 此设置可确保传输到 fs.contoso.com 的所有数据最终都使用适当的路由到达 ILB。 A 记录应用于联合身份验证服务,其 IP 地址指向 ILB 的 IP 地址。 例如,如果 ILB IP 地址为 10.3.0.8,安装的联合身份验证服务为 fs.contoso.com,则为 fs.contoso.com 创建一个指向 10.3.0.8 的 A 记录。
如果正在为 AD FS 数据库使用 Windows 内部数据库 (WID),请将此值设置为暂时指向主 AD FS 服务器。 如果不进行此临时设置更改,Web 应用程序代理将无法注册。 成功注册所有 Web 应用程序代理服务器后,请更改此 DNS 条目以指向负载均衡器。
如果部署也使用 IPv6,请创建相应的 AAAA 记录。
若要确保 Web 应用程序代理服务器能够访问 ILB 后面的 AD FS 服务器,请在 ILB 的 %systemroot%\system32\drivers\etc\hosts 文件中创建记录。 可分辨名称 (DN) 应为联合身份验证服务名称,例如 fs.contoso.com。 IP 条目应为 ILB 的 IP 地址,在本例中为 10.3.0.8。
如果正在为 AD FS 数据库使用 Windows 内部数据库 (WID),请将此值设置为暂时指向主 AD FS 服务器。 否则,Web 应用程序代理将无法注册。 成功注册所有 Web 应用程序代理服务器后,请更改此 DNS 条目以指向负载均衡器。
安装 Web 应用程序代理角色
确保 Web 应用程序代理服务器能够访问 ILB 后面的 AD FS 服务器后,接下来可以安装 Web 应用程序代理服务器。 Web 应用程序代理服务器不需要加入域。 通过选择
远程访问
角色,在两个 Web 应用程序代理服务器上安装 Web 应用程序代理角色。 服务器管理器指导你完成 WAP 安装。
有关如何部署 WAP 的详细信息,请参阅
安装和配置 Web 应用程序代理服务器
。
创建和部署面向 Internet 的(公共)负载均衡器
若要创建和部署面向 Internet 的负载均衡器,请执行以下操作:
在 Azure 门户中,选择“
负载均衡器
”,然后单击“
创建
”。
在
创建负载均衡器
中,转到
基本信息
选项卡,并配置以下设置:
在“项目详细信息”下
:
对于
订阅
,请选择订阅的名称。
对于
资源组
,请选择现有资源组,或选择
新建
以创建新资源组。
在“实例详细信息”下:
对于
名称
,请输入负载均衡器的名称。
对于
区域
,选择要使用的区域。
对于
类型
,请选择
公共
。
将
SKU
和
层
保留为默认值,然后选择“
下一步:前端 IP 配置
”
在“设置”下,选择“配置”。
在“
提供 DNS 标签(可选)
”下,在解析为外部负载均衡器的 DNS 标签(如 contosofs.westus.cloudapp.azure.com)的文本字段中添加一个条目(如 fs.contoso.com)。
选择“
保存
”以完成 DNS 标签分配。
测试 AD FS 登录
测试 AD FS 的最简单方法是使用 IdpInitiatedSignOn.aspx 页。 为此,必须在 AD FS 属性上启用 IdpInitiatedSignOn。
若要检查是否已启用 IdpInitiatedSignOn 属性,请执行以下操作:
在 PowerShell 中,在 AD FS 服务器上运行以下 cmdlet 以将其设置为已启用。
Set-AdfsProperties -EnableIdPInitiatedSignOnPage $true
从任何外部计算机访问 https:\//adfs-server.contoso.com/adfs/ls/IdpInitiatedSignon.aspx
。
你应该看到以下 AD FS 页面:
请尝试登录。 如果成功登录,你应该会看到出现一条消息,如下面的屏幕截图所示。
ADFSLoadBalancerPrivateIPAddress
AD FS 负载均衡器的内部 IP 地址。 此 IP 地址静态分配给负载均衡器,并且必须是内部子网内的有效 IP 地址。
ADDCVMNamePrefix
域控制器的 VM 名称前缀。
ADFSVMNamePrefix
AD FS 服务器的 VM 名称前缀。
WAPVMNamePrefix
WAP 服务器的 VM 名称前缀。
ADDCVMSize
域控制器的 VM 大小。
ADFSVMSize
AD FS 服务器的 VM 大小。
WAPVMSize
WAP 服务器的 VM 大小。
AdminUserName
VM 的本地管理员的名称。
AdminPassword
VM 的本地管理员帐户的密码。
Azure 负载均衡器
内部负载均衡器
面向 Internet 的负载均衡器
Azure 虚拟网络
AD FS 和 Web 应用程序代理链接
将本地标识与 Microsoft Entra ID 集成
使用 Microsoft Entra Connect 配置和管理 AD FS
使用 Azure 流量管理器在 Azure 中进行跨区域 AD FS 部署以实现高可用性