亚马逊AWS官方博客

新增功能 – 使用 WebAuthn 对 AWS SSO 执行 Multi-Factor Authentication

即日起,除了当前支持的一次性密码 (OTP) 和 Radius 身份验证器之外,您还可以将 WebAuthn 作为一种新的 Multi-Factor Authentication (MFA) 添加到 AWS Single Sign-On。添加对 WebAuthn(一种 W3C 规范,与 FIDO Alliance 协同开发)的支持后,您现在可以使用系统管理员预置的或笔记本电脑或智能手机中内置的各种可互操作的身份验证器进行身份验证。例如,您现在可以点击硬件安全密钥,触摸 Mac 上的指纹传感器,或使用移动设备或 PC 上的面部识别功能,在 AWS 管理控制台 AWS 命令行界面 (CLI) 中进行身份验证。

添加此功能后,您现在可以自行注册多个 MFA 身份验证器。这样,您可以在主身份验证器设备丢失或放错位置时使用其他设备在 AWS 上进行身份验证。我们让您轻松命名设备以实现长期可管理性。

WebAuthn 双因素身份验证可用于存储在 AWS Single Sign-On 内部身份存储中的身份和存储在 Microsoft Active Directory 中的身份(无论相关身份是否由 AWS 管理)。

什么是 WebAuthn 和 FIDO2?

在探索如何使用已启用 FIDO2 的设备配置双因素身份验证,并了解基于 Web 和 CLI 身份验证的用户体验之前,让我们先来回顾一下 FIDO2、WebAuthn 和其他规范是如何组合在一起的。

FIDO2 由两个核心规范组成:Web 身份验证 (WebAuthn) 和客户端到身份验证器协议 (CTAP)。

Web 身份验证 (WebAuthn) 是一种 W3C 标准,提供基于公钥加密的强身份验证。与使用 TOTP 协议的传统代码生成器令牌或应用程序不同,它不需要在服务器和客户端之间共享密钥。相反,它依赖于公钥对和具有独特挑战的数字签名。私钥永远不会离开受保护的设备,即,已启用 FIDO 的身份验证器。当您尝试对网站进行身份验证时,此安全设备会使用 CTAP 协议与您的浏览器进行交互。

WebAuthn 功能非常强大:在理想情况下,身份验证由安全元素提供支持,该元素可以安全地存储私钥并执行加密操作。它是存在界定范围的:密钥对仅对特定来源有用,例如浏览器 Cookie。在 console.amazonaws.com 上注册的密钥对不能在 console.not-the-real-amazon.com 上使用,这样减轻了网络钓鱼的威胁。最后,它已得到证实:身份验证器可以提供证书,该证书可帮助服务器验证公钥确实来自他们信任的身份验证器,而不是欺诈性来源。

因此,要开始使用 FIDO2 身份验证,您需要具备三个要素:支持 WebAuthn 的网站、支持 WebAuthn 和 CTAP 协议的浏览器,以及 FIDO 身份验证器。即日起,SSO 管理控制台CLI 现在支持 WebAuthn。所有现代 Web 浏览器都与之兼容(Chrome、Edge、Firefox 和 Safari)。FIDO 身份验证器可以是您可从一台设备或另一台设备(漫游身份验证器)使用的设备,例如 YubiKey,也可以是 Android、iOS、iPadOS、Windows、Chrome OS 和 macOS(平台身份验证器)支持的内置硬件。

FIDO2 的工作原理
当我第一次在 AWS SSO 上注册已启用 FIDO 的身份验证器时,身份验证器会创建一组新的公钥凭证,该凭证可用于签署由 AWS SSO 控制台(中继方)生成的质询。这些新凭证的公共部分以及签名的质询都由 AWS SSO 存储。

当我要使用 WebAuthn 作为第二因素身份验证时,AWS SSO 控制台会向我的身份验证器发送质询。然后,可以使用先前生成的公钥凭证对此质询进行签名,再将其发送回控制台。这样,AWS SSO 控制台就可以验证我是否拥有所需的凭证。

如何在 AWS SSO 控制台中启用安全设备的 MFA?
当用户配置文件存储在 AWS SSO 本身或存储在您的 Active Directory(自行管理的或适用于 Microsoft Active Directory 的 AWS Directory Service )中时,系统管理员可以为 AWS SSO 员工启用 MFA。

要让我的员工在自助模式下注册其 FIDO 或 U2F 身份验证器,我首先导航到设置,然后单击 Multi-Factor Authentication 下的配置。在下面的屏幕上,我进行了四项更改。首先,在应提示用户使用 MFA下,我选择每次用户登录时。其次,在用户可以使用这些 MFA 类型进行身份验证下,我选中了安全密钥和内置身份验证器。第三,在如果用户还没有注册 MFA 设备下,我选中了要求他们在登录时注册 MFA 设备。 最后,在谁可以管理 MFA 设备下,我选中了用户可以添加和管理自己的 MFA 设备。我单击保存更改以保存并返回。

配置 SSO 2

就是这样。现在,您的员工在下次进行身份验证时,系统会提示他们注册其 MFA 设备。

用户体验流程是什么?
作为 AWS 控制台用户,我通过系统管理员提供的 AWS SSO 门户网页 URL 进行身份验证。我像往常一样使用用户名和密码登录。在接下来显示的屏幕上,系统提示我注册我的身份验证器。我选中了安全密钥作为设备类型。为了使用生物识别因子(例如指纹或人脸识别),我单击内置身份验证器

注册 MFA 设备

浏览器要求我生成密钥对并发送我的公钥。我可以通过触摸我的设备上的按钮,或者提供注册的生物识别技术(例如 TouchID 或 FaceID)来完成此操作。注册安全密钥浏览器确实确认并向我显示最后一个屏幕,我可以在其中为我的设备提供友好名称,以便我可以将设备与名称对应起来。然后我单击保存完成确认设备注册从现在起,每次登录时,系统都会提示我触摸我的安全设备或在智能手机或笔记本电脑上使用生物识别身份验证。后台发生的操作是服务器向我的浏览器发送质询。浏览器会将质询发送到安全设备。安全设备会使用我的私钥对质询进行签名,然后将其返回到服务器进行验证。当服务器使用我的公钥对签名进行验证后,我将获得对 AWS 管理控制台的访问权限。

需要额外验证

我可以随时注册其他设备并管理我的已注册设备。在 AWS SSO 门户页面上,我单击屏幕右上角的 MFA 设备

MFA 设备管理

我可以查看和管理为我的账户注册的设备(如果有)。我单击注册设备以注册新设备。

如何为 AWS CLI 配置 SSO?
配置好设备后,我就可以在 AWS 命令行界面 (CLI) 上配置 SSO。

我首先使用 AWS 配置 SSO 配置 CLI SSO,然后输入系统管理员提供的 SSO 域 URL。CLI 会打开一个浏览器,我可以在其中使用我的用户名、密码和先前配置的第二因素身份验证进行身份验证。Web 控制台给了我一个代码,我在 CLI 提示符中输入该代码。AWS 配置 SSO

当我有权访问多个 AWS 账户时,CLI 会列出这些账户,然后我选择要使用的账户。这是一次性配置。

完成此操作后,我可以像往常一样使用 AWS CLI,SSO 身份验证会在后台自动进行。系统会不时要求您重新进行身份验证,具体取决于系统管理员设置的配置。

现已推出
AWS Single Sign-On 一样,使用 FIDO2 第二因素身份验证无需任何额外费用,并且在提供 AWS SSO 的所有 AWS 区域均可使用

像往常一样,我们欢迎您提供反馈。团队告诉我,他们正在研究其他功能,以便在不久的将来为您提供更多的身份验证选项。

您可以立即开始将 FIDO2 用作 AWS Single Sign-On 的第二因素身份验证。立即进行配置

— seb