如何在 Amazon EC2 Windows 实例上设置 AD FS,以对 Amazon Cognito 用户池使用联合身份验证?

上次更新时间:2020 年 8 月 31 日

我想使用 Amazon Cognito 用户池将 Active Directory 联合身份验证服务 (AD FS) 设为安全断言标记语言 2.0 (SAML 2.0) 身份提供商 (IdP)。如何在 Amazon Elastic Compute Cloud (Amazon EC2) Windows 实例上设置 AD FS?

简短描述

在 EC2 Windows 实例上使用服务器管理器设置 AD FS 服务器和域控制器。

解决方法

在开始之前,请参阅如何使用 Amazon Cognito 用户池将 AD FS 设置为 SAML 身份提供商?中的说明 您需要 Amazon Cognito 用户池和应用程序客户端来完成本文中的设置。

您还需要拥有自己的域名。如果您没有自己的域,可以使用 Amazon Route 53 或其他域名系统 (DNS) 服务注册新域。

配置并启动 EC2 Windows 实例

  1. 打开 Amazon EC2 控制台
  2. 从控制台控制面板中,选择 Launch Instance(启动实例)以启动 Launch Instance(启动实例)向导。
  3. Choose an Amazon Machine Image (AMI)(选择一个 Amazon 系统映像 (AMI))页面上,选择用于 Windows Server 的 AMI,如 Microsoft Windows Server 2016 Base AMI。有关更多信息,请参阅查找 Windows AMI
  4. Configure Security Group(配置安全组)页面上,为您的实例创建安全组,然后向安全组中添加以下规则:
    类型:RDP
    来源:用 CIDR 表示法表示的 IP 地址 (a.b.c.d/z),或 CIDR 数据块
    注意:对于您在来源中指定的 IP 地址或数据块,最佳实践是使用一组已知允许的 IP 地址。
    类型:HTTP
    来源:Anywhere
    类似:HTTPS
    来源:Anywhere
    有关更多信息,请参阅 Windows 实例的 Amazon EC2 安全组向安全组添加规则
  5. Review Instance Launch(核查实例启动)页面上,选择 Launch(启动)。
  6. Select an existing key pair or create a new key pair(选择现有密钥对或创建新密钥对)对话框中,按照说明选择现有密钥对或创建新密钥对。有关更多信息,请参阅 Amazon EC2 密钥对和 Linux 实例
    重要提示:请保存用于您的密钥对的私有密钥 .pem 文件。您可以使用它来连接到您的 EC2 Windows 实例。
  7. 选择启动实例

将弹性 IP 地址与 EC2 Windows 实例关联

  1. 如果您尚未关联,请向您的 AWS 账户分配弹性 IP 地址
  2. 将弹性 IP 地址与 EC2 Windows 实例关联,以便您的实例有一个永久的公有 IP 地址。

使用弹性 IP 地址创建域的记录

用于 Active Directory 域服务 (AD DS) 的域必须具有 (IPv4 地址) 记录,且弹性 IP 地址作为值。使用与 EC2 Windows 实例关联的弹性 IP 地址为您的域创建此记录。

有关更多信息,请参阅使用 Amazon Route 53 控制台创建记录

在 EC2 Windows 实例上安装 AD DS、Web 服务器 (IIS) 和 AD FS

  1. 连接到 EC2 Windows 实例
  2. 在 Windows 中,打开 Server Manager(服务器管理器),然后使用 Add Roles and Features Wizard(添加角色和功能向导)安装以下角色:
    Active Directory 域服务
    Active Directory 联合身份验证服务
    Web 服务器 (IIS)

有关使用此向导的更多信息,请参阅 Microsoft Docs 网站上的安装或卸载角色、角色服务或功能

在 EC2 Windows 实例上配置 AD DS

  1. 在服务器管理器中,使用 Active Directory Domain Services Configuration Wizard(Active Directory 域服务配置向导)配置 AD DS。有关更多信息,请参阅 Microsoft Docs 网站上的使用服务器管理器安装 AD DS。按照使用服务器管理器安装 AD DS 下的说明,从第 9 步开始。
    注意:在此向导中,在 Deployment Configuration(部署配置)页面上,输入您的域(例如 example.com)。
  2. 配置完成安装后,Windows 会通知您,您即将注销。这是正常的。等待几分钟让服务器重新启动,然后再次连接到 EC2 Windows 实例

在 IIS 中配置 http 站点绑定

在服务器管理器中,使用 IIS 编辑适用于您的网站的 http 站点绑定。有关更多信息,请参阅 Microsoft Docs 网站上的如果向站点添加绑定信息

重要提示:在 IIS 中编辑 http 绑定时,对于主机名,输入您的域名(例如 example.com)。但是,不要更改 IP 地址 (所有未分配的)端口 (80)

配置 EC2 Windows 实例以允许下载文件

有关更多信息,请参阅如何配置 EC2 Windows 实例以允许使用 Internet Explorer 下载文件?

请求域的数字证书

您需要用于 IIS 网站的 HTTPS 绑定的 SSL 服务器证书。通过下载并使用您喜欢的受信任的第三方证书创建工具,来请求用于您的域的第三方证书。

有关更多信息,请参阅 Microsoft Docs 网站上的选择证书

(可选) 在 IIS 中配置 HTTPS 站点绑定

如果您使用的证书创建工具未在 IIS 中自动添加 https 站点绑定,则自行添加站点绑定,就像您之前为 http 添加一样。

有关更多信息,请参阅 Microsoft Docs 网站上的创建 SSL 绑定

在 EC2 Windows 实例上配置 AD FS

在服务器管理器中,使用 AD FS Federation Server Configuration Wizard(AD FS 联合身份验证服务器配置向导)将 EC2 Windows 实例配置为联合身份验证服务器。有关更多信息,请参阅 Microsoft Docs 网站上的 Windows Server 2008 或 2008 R2 域控制器

注意:在向导的 Specify Service Account(指定服务账户)页面上,当您转到Select User or Service Account(选择用户或服务账户)对话框时,选择名为 Administrator(管理员)的用户,然后输入远程桌面连接到 EC2 Windows 实例所用的密码。

在 Active Directory 中创建用户

使用 Active Directory 用户和计算机工具在 Active Directory 中创建新用户。向 Administrators(管理员)组添加新用户。

有关更多信息,请参阅 Microsoft Docs 网站上的创建用户并添加到组

为 Active Directory 用户添加电子邮件地址

  1. 在创建新用户后,在 Active Directory 用户和计算机工具中,双击 Users(用户)以打开用户列表。
  2. 在用户列表中,找到您创建的用户。右键单击用户以打开上下文菜单,然后选择 Properties(属性)。
  3. 在用户名的 Properties(属性)窗口中,对于 E-mail(电子邮件),输入用户的有效电子邮件地址。此电子邮件地址稍后会包括在 SAML 断言中。

有关更多信息,请参阅 Microsoft Docs 网站上的 General Property Page

在 AD FS 中添加声明感知信赖方信任

注意:对于此部分,您需要来自 Amazon Cognito 控制台Amazon Cognito 用户池的信息。有关更多信息,请参阅向用户池添加 SAML 身份提供商

在服务器管理器中,使用 Add Relying Party Trust Wizard(添加信赖方信任向导)添加声明感知信赖方信任。
在向导的 Configure URL(配置 URL)页面上,选中Enable support for the SAML 2.0 WebSSO protocol(启用对 SAML 2.0 WebSSO 协议的支持)复选框。对于 Relying party SAML 2.0 SSO service URL(信赖方 SAML 2.0 SSO 服务 URL),输入断言用户终端节点 URL,格式如下所示:https://yourDomainPrefix.auth.region.amazoncognito.com/saml2/idpresponse
注意:yourDomainPrefix 替换为 Amazon Cognito 用户池的域前缀。将 region 替换为用户池的 AWS 区域 (例如,"us-east-1")。

在向导的 Configure Identifiers(配置标识符)页面上,对于Relying party trust identifier(信赖方信任标识符),输入以下 URN:urn:amazon:cognito:sp:yourUserPoolID
注意:yourUserPoolID 替换为您的 Amazon Cognito 用户池的 ID(例如,“us-east-1_g2zxiEbac”)。

有关更多信息,请参阅 Microsoft Docs 网站上的手动创建声明感知信赖方信任

在 AD FS 中编辑应用程序的声明颁发策略

向您创建的信任添加规则,以声明的方式发送 LDAP 属性。使用“添加信赖方信任向导”添加该规则。在配置规则页面上,执行以下操作:

  • 对于声明规则名称,输入电子邮件
  • 对于特性存储,选择 Active Directory
  • 对于 LDAP 特性,选择 E-Mail-Addresses
  • 对于 Outgoing Claim Type(传出声明类型),选择 E-Mail Address(电子邮件地址)。

有关更多信息,请参阅 Microsoft Docs 网站上的创建一个规则来发送 LDAP 属性作为 Windows Server 2016 中信赖方信任的声明

注意:要同时让电子邮件 ID 和名称 ID 声明在 SAML 响应的 SAML 断言中显示为用户的电子邮件地址,请将来自 Active Directory 的传入的电子邮件地址映射到传出的名称 ID 声明。如果您使用该方法,则请创建规则以改为以声明方式发送 LDAP 属性。有关更多信息,请参阅 Microsoft Docs 网站上的创建一个规则来发送 LDAP 属性作为 Windows Server 2012 R2 的声明

针对服务器测试 SAML IdP 元数据 URL

在 Web 浏览器中输入此元数据文档终端节点 URL,然后将 example.com 替换为您的域:

https://example.com/federationmetadata/2007-06/federationmetadata.xml

如果系统提示您下载文件 federationmetadata.xml,则表示所有内容均配置正确。请记下您在此使用的 URL,或下载 .xml 文件。您需要 URL 或文件来在 Amazon Cognito 控制台中配置 SAML。有关更多信息,请参阅将第三方 SAML 身份提供商与 Amazon Cognito 用户池集成

在 Amazon Cognito 中将 AD FS 配置为 SAML IdP

完成本文中的所有步骤后,继续在 Amazon Cognito 控制台设置。有关更多信息,请参阅如何使用 Amazon Cognito 用户池将 AD FS 设置为 SAML 身份提供商?