通过可信令牌发布者使用应用程序 - Amazon IAM Identity Center
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

通过可信令牌发布者使用应用程序

可信令牌发行者使您能够在外部进行身份验证的应用程序中使用可信身份传播。 Amazon通过可信令牌发布者,您可以授权这些应用程序代表其用户对 Amazon 托管的应用程序提出访问请求。

以下主题介绍了可信令牌发布者的工作方式,并提供了设置指导。

可信令牌发布者概述

可信身份传播提供了一种机制,允许在外部进行身份验证的 Amazon 应用程序使用可信令牌颁发者代表其用户发出请求。可信令牌发布者是可创建签名令牌的 OAuth 2.0 授权服务器。这些令牌授权应用程序发起 Amazon 服务访问请求(请求应用程序)(接收应用程序)。请求端应用程序代表经过可信令牌发布者验证身份的用户发起访问请求。可信令牌发布者和 IAM Identity Center 都知道这些用户。

Amazon 接收请求的服务根据其用户和群组成员资格(如身份中心目录中所示)来管理对其资源的精细授权。 Amazon 服务不能直接使用来自外部令牌发行者的令牌。

为了解决这个问题,IAM Identity Center 为请求端应用程序或请求端应用程序使用的 Amazon 驱动程序提供了一种方法,将可信令牌发布者发布的令牌交换为 IAM Identity Center 生成的令牌。IAM Identity Center 生成的令牌指向相应的 IAM Identity Center 用户。请求端应用程序或驱动程序使用新令牌向接收端应用程序发起请求。由于新令牌引用了 IAM Identity Center 中的相应用户,因此接收端应用程序可以根据 IAM Identity Center 中显示的用户或其组成员资格,对请求的访问权限授权。

重要

选择将 OAuth 2.0 授权服务器添加为可信令牌发布者是一项需要仔细考虑的安全决定。仅选择您信任的可信令牌发布者执行以下任务:

  • 对令牌中指定的用户进行身份验证。

  • 授权该用户访问接收端应用程序。

  • 生成一个令牌,让 IAM Identity Center 可以将它交换成 IAM Identity Center 创建的令牌。

针对可信令牌发布者的先决条件和注意事项

在设置可信令牌发布者之前,请先查看以下先决条件和注意事项。

  • 可信令牌发布者的配置

    您必须配置 OAuth 2.0 授权服务器(可信令牌颁发者)。尽管可信令牌发行者通常是您用作 IAM Identity Center 身份源的身份提供商,但不一定是这样。有关如何设置可信令牌发行者的信息,请参阅相关身份提供商的文档。

    注意

    您最多可以配置 10 个可信令牌发布者,将它们与 IAM Identity Center 搭配使用,为此,您只需将可信令牌发布者中每个用户的身份映射到 IAM Identity Center 中的相应用户即可。

  • 创建令牌的 OAuth 2.0 授权服务器(可信令牌发布者)必须具有 OpenID Connect (OIDC) 发现端点,IAM Identity Center 可以使用该端点获取用于验证令牌签名的公钥。有关更多信息,请参阅 OIDC 发现端点 URL(颁发者网址)

  • 由可信代币发行者发行的代币

    来自可信代币发行者的代币必须满足以下要求:

    • 令牌必须使用 RS256 算法进行签名并采用 JSON 网络令牌 (JWT) 格式。

    • 令牌必须包含以下声明:

      • 发行者 (iss)-发行代币的实体。此值必须与可信令牌发行者的 OIDC 发现端点(发行者 URL)中配置的值相匹配。

      • 主题(sub)-经过身份验证的用户。

      • 受众 (aud)-代币的预期接收者。在将令牌交换为 IAM 身份中心的令牌后,将访问该 Amazon 服务。有关更多信息,请参阅 Aud 声明

      • 到期时间 (exp)-令牌过期的时间。

    • 令牌可以是身份令牌,也可以是访问令牌。

    • 令牌必须包含一个与一名 IAM Identity Center 用户具有唯一对应关系的属性。

  • 可选声明

    IAM Identity Center 支持 RFC 7523 中定义的所有可选声明。有关更多信息,请参阅此 RFC 的第 3 节:JWT 格式和处理要求

    例如,令牌可以包含 JTI (JWT ID) 声明。此声明(如果存在)可以防止具有相同 JTI 的令牌被重复用于令牌交换。有关 JTI 声明的更多信息,请参阅 JTI 声明详细信息

  • 使 IAM Identity Center 与可信令牌发布者协同工作的配置

    您还必须启用 IAM Identity Center,为 IAM Identity Center 配置身份源,并预置与可信令牌发布者目录中的用户对应的用户。

    为此,您必须执行以下任一操作:

    • 使用跨域身份管理系统 (SCIM) 2.0 协议,将用户同步到 IAM Identity Center。

    • 直接在 IAM Identity Center 创建用户。

    注意

    如果您使用 Active Directory 域服务作为身份源,将无法支持可信令牌发布者。

JTI 声明详细信息

如果 IAM Identity Center 收到交换令牌的请求,而该令牌已经被 IAM Identity Center 交换过,该请求将失败。要检测并防止重复使用令牌进行交换,您可以添加 JTI 声明。IAM Identity Center 可根据令牌中的声明,防止令牌被重放。

并非所有 OAuth 2.0 授权服务器都会向令牌添加 JTI 声明。有些 OAuth 2.0 授权服务器可能不允许您添加 JTI 作为自定义声明。支持使用 JTI 声明的 OAuth 2.0 授权服务器可能会仅将此声明添加到身份令牌或仅限访问令牌,也可能将其添加到两者。有关更多信息,请参阅 OAuth 2.0 授权服务器的文档。

有关构建交换令牌的应用程序信息,请参阅 IAM Identity Center API 文档。有关配置客户托管应用程序以获取和交换正确令牌的信息,请参阅该应用程序的文档。

可信令牌发布者的配置设置

以下各节描述了设置和使用可信令牌发布者所需的设置。

OIDC 发现端点 URL(颁发者网址)

向 IAM Identity Center 控制台添加可信令牌发布者时,必须指定 OIDC 发现端点 URL。此 URL 通常是指其相对 URL,即 /.well-known/openid-configuration。在 IAM Identity Center 控制台,此 URL 称为发布者 URL

注意

您必须将发现端点的 URL 粘贴到上面和不粘贴.well-known/openid-configuration。如果包含在 URL 中,.well-known/openid-configuration则可信令牌发行者配置将不起作用。由于 IAM Identity Center 不会验证此 URL,因此,如果 URL 的格式不正确,则可信令牌发行者的设置将失败,且不会发出通知。

IAM Identity Center 使用此 URL 获取有关可信令牌发布者的其他信息。例如,IAM Identity Center 使用此 URL 获取所需的信息,以验证可信令牌发布者生成的令牌。向 IAM Identity Center 添加可信令牌发布者时,必须指定此 URL。要查找 URL,请参阅用于为应用程序生成令牌的 OAuth 2.0 授权服务器的提供商文档,或者直接联系提供商寻求帮助。

属性映射

IAM Identity Center 能够使用属性映射,将可信令牌发布者发布的令牌所代表的用户与 IAM Identity Center 中的单个用户相匹配。向 IAM Identity Center 添加可信令牌发布者时,您必须指定属性映射。此属性映射用于可信令牌发布者生成的令牌中的声明。声明中的值用于搜索 IAM Identity Center。搜索使用指定的属性检索 IAM Identity Center 中的单个用户,该用户将被用作 Amazon中的用户。您选择的声明必须映射到 IAM Identity Center 身份存储中可用属性固定列表中的一个属性。您可以选择以下 IAM Identity Center 身份存储属性之一:用户名、电子邮件和外部 ID。对于每个用户,您在 IAM Identity Center 指定的属性值必须唯一。

Aud 声明

Aud 声明将确定令牌的目标受众(接收者)。当请求访问权限的应用程序通过未联合到 IAM Identity Center 的身份提供商进行身份验证时,必须将该身份提供商设置为可信令牌发布者。接收访问请求的应用程序(接收端应用程序)必须将可信令牌发布者生成的令牌与 IAM Identity Center 生成的令牌交换。

有关如何获取接收端应用程序在可信令牌发布者处注册的受众声明值,请参阅可信令牌发布者的文档,或联系可信令牌发布者管理员寻求帮助。

设置可信令牌发布者

要为在 IAM Identity Center 外部进行身份验证的应用程序启用可信身份传播,必须由一名或多名管理员设置可信令牌发布者。可信令牌发布者是一种 OAuth 2.0 授权服务器,向发起请求的应用程序(请求端应用程序)发布令牌。令牌授权这些应用程序代表其用户向接收应用程序( Amazon 服务)发起请求。

协调管理角色和职责

在某些情况下,一名管理员可能会执行设置可信令牌发布者所需的所有必要任务。如果有多名管理员执行这些任务,则需要密切协调。下表描述了多个管理员如何协调设置可信令牌发行者并配置 Amazon 服务以使用该令牌。

注意

该应用程序可以是任何与 IAM Identity Center 集成并支持可信身份传播的 Amazon 服务。

有关更多信息,请参阅 设置可信令牌发布者的任务

角色 执行这些任务 协调对象
IAM Identity Center 管理员

将外部 IdP 作为可信令牌发布者添加到 IAM Identity Center 控制台。

帮助在 IAM Identity Center 和外部 IdP 之间设置正确的属性映射。

当可信令牌颁发者添加到 IAM Identity Center 控制台时,通知 Amazon 服务管理员。

外部 IdP(可信令牌发布者)管理员

Amazon 服务管理员

外部 IdP(可信令牌发布者)管理员

配置外部 IDP,以颁发令牌。

帮助在 IAM Identity Center 和外部 IdP 之间设置正确的属性映射。

向 Amazon 服务管理员提供受众名称(Aud 声明)。

IAM Identity Center 管理员

Amazon 服务管理员

Amazon 服务管理员

检查 Amazon 服务控制台中是否有受信任的令牌发行者。当 IAM Identity Center 管理员将可信令牌发布者添加到 IAM Identity Center 控制台后,可信令牌发布者将在 Amazon 服务控制台中出现。

将 Amazon 服务配置为使用可信令牌发行者。

IAM Identity Center 管理员

外部 IdP(可信令牌发布者)管理员

设置可信令牌发布者的任务

要设置可信令牌发布者,IAM Identity Center 管理员、外部 IdP(可信令牌发布者)管理员和应用程序管理员必须完成以下任务。

注意

该应用程序可以是任何与 IAM Identity Center 集成并支持可信身份传播的 Amazon 服务。

  1. 将可信令牌发布者添加到 IAM Identity Center - IAM Identity Center 管理员使用 IAM Identity Center 控制台或 API 添加可信令牌发布者。此配置需要指定以下内容:

    • 可信令牌发布者的名称

    • OIDC 发现端点 URL(在 IAM Identity Center 控制台中,此 URL 称为发布者 URL)。

    • 供用户查询的属性映射。此属性映射用于可信令牌发布者生成的令牌中的声明。声明中的值用于搜索 IAM Identity Center。搜索使用指定的属性检索 IAM Identity Center 中的单个用户。

  2. 将@@ Amazon 服务连接到 IAM Identit y Center — Amazon 服务管理员必须使用应用程序或应用程序 API 的控制台将应用程序连接到 IAM 身份中心。

    将可信令牌颁发者添加到 IAM Identity Center 控制台后,它也会在 Amazon 服务控制台中可见,可供 Amazon 服务管理员选择。

  3. 配置令牌交换的使用-在 Amazon 服务控制台中, Amazon 服务管理员将 Amazon 服务配置为接受可信令牌发行者发行的令牌。这些令牌将与 IAM Identity Center 生成的令牌交换。这需要指定步骤 1 中受信任的代币发行者的名称,以及与该 Amazon 服务对应的澳元索赔值。

    可信令牌发布者在其颁发的令牌中放置 Aud 声明值,以表明该令牌供 Amazon 服务使用。要获取此值,请联系可信令牌发布者管理员。

如何向 IAM Identity Center 控制台添加可信令牌发布者

在拥有多名管理员的组织中,此任务由 IAM Identity Center 管理员执行。如果您是 IAM Identity Center 管理员,则必须选择使用哪个外部 IdP 作为可信令牌发布者。

要向 IAM Identity Center 控制台添加可信令牌发布者
  1. 打开 IAM Identity Center 控制台

  2. 选择设置

  3. 设置页面上,选择身份验证选项卡。

  4. 可信令牌发布者下,选择创建可信令牌发布者

  5. 设置外部 IdP 以发布可信令牌页面的可信令牌发布者详细信息下,执行以下操作:

    • 在 “颁发者 URL” 中,指定将为可信身份传播颁发令牌的外部 IdP 的 OIDC 发现 URL。您必须指定发现端点的 URL,直到和不是.well-known/openid-configuration。外部 IdP 的管理员可以提供此 URL。

      注意

      注意此 URL 必须与为可信身份传播而颁发的令牌中的颁发者 (iss) 声明中的 URL 相匹配。

    • 可信令牌发布者名称中,输入一个名称,以便在 IAM Identity Center 和应用程序控制台中识别该可信令牌发布者。

  6. 映射属性下,执行以下操作:

    • 对于身份提供商属性,从列表中选择一个属性,以映射到 IAM Identity Center 身份存储中的属性。

    • 对于 IAM Identity Center 属性,为属性映射选择相应的属性。

  7. 标签(可选)下,选择添加新标签,为(可选)指定值。

    有关标签的信息,请参阅 为 Amazon IAM Identity Center 资源添加标签

  8. 选择创建可信令牌发布者

  9. 创建完可信令牌发布者后,请联系应用程序管理员,告知他们可信令牌发布者的名称,以便他们可以确认可信令牌发布者在适用的控制台中可见。

  10. 应用程序管理员必须在适用的控制台中选择此可信令牌发布者,才能允许用户从为可信身份传播配置的应用程序中访问其他应用程序。

如何在 IAM Identity Center 控制台中查看或编辑可信令牌发布者设置

将可信令牌发布者添加到 IAM Identity Center 控制台后,您可以查看和编辑相关设置。

如果您计划编辑可信令牌发布者设置,请注意,这样做可能会导致用户无法访问任何配置为使用可信令牌发布者的应用程序。为避免中断用户访问,我们建议您在编辑设置之前,与配置为使用可信令牌发布者的应用程序管理员进行协调。

要在 IAM Identity Center 控制台中查看或编辑可信令牌发布者设置
  1. 打开 IAM Identity Center 控制台

  2. 选择设置

  3. 设置页面上,选择身份验证选项卡。

  4. 可信令牌发布者下,选择要查看或编辑的可信令牌发布者。

  5. 选择操作,然后选择编辑

  6. 编辑可信令牌发布者页面,根据需要查看或编辑设置。您可以编辑可信令牌发布者名称、属性映射和标签。

  7. 选择保存更改

  8. 编辑可信令牌发布者对话框中,系统会提示您确认是否要进行更改。选择确认

使用可信令牌发布者的应用程序的设置过程和请求流程

本节介绍使用可信令牌发布者进行可信身份传播的应用程序的设置过程和请求流程。下图提供了此过程的概述。

使用可信令牌发布者进行可信身份传播的应用程序的设置过程和请求流程。

以下步骤提供了有关此过程的更多信息。

  1. 设置 IAM Identity Center 和接收 Amazon 托管应用程序以使用可信令牌颁发者。有关信息,请参阅 设置可信令牌发布者的任务

  2. 当用户打开请求端应用程序时,请求流程开始。

  3. 发出请求的应用程序向可信令牌颁发者请求令牌,以向接收的 Amazon 托管应用程序发起请求。如果用户尚未进行身份验证,此过程会触发身份验证流程。令牌包含以下信息:

    • 用户的主体 (Sub)。

    • IAM Identity Center 用于在 IAM Identity Center 查找相应用户的属性。

    • 受众 (Aud) 声明,其中包含可信令牌发布者与接收端 Amazon 托管应用程序相关联的值。如果存在其他声明,IAM Identity Center 将不会使用它们。

  4. 发出请求的应用程序或其使用的 Amazon 驱动程序将令牌传递给 IAM Identity Center,并请求将该令牌交换为 IAM Identity Center 生成的令牌。如果您使用 Amazon 驱动程序,则可能需要为此用例配置驱动程序。有关更多信息,请参阅相关 Amazon 托管应用程序的文档。

  5. IAM Identity Center 使用 OIDC 发现端点获取可用于验证令牌真实性的公钥。然后,IAM Identity Center 会执行以下操作:

    • 验证令牌。

    • 搜索 Identity Center 目录。为此,IAM Identity Center 会使用令牌中指定的映射属性。

    • 验证用户是否被授权访问接收端应用程序。如果将 Amazon 托管应用程序配置为要求向用户和组分配任务,则用户必须对应用程序进行直接分配或基于群组的分配;否则请求将被拒绝。如果 Amazon 托管的应用程序配置为不需要对用户和组进行分配,则处理将继续。

      注意

      Amazon 服务具有默认设置配置,用于确定是否需要为用户和组进行分配。如果您计划将这些应用程序用于可信身份传播,我们建议不要修改它们的需要分配设置。即使您配置了允许用户访问特定应用程序资源的细粒度权限,修改需要分配设置也可能会导致意外行为,包括中断用户对这些资源的访问。

    • 验证发出请求的应用程序是否已配置为对接收的 Amazon 托管应用程序使用有效的范围。

  6. 如果前面的验证步骤成功,IAM Identity Center 将创建一个新令牌。新令牌是不透明(加密)的令牌,其中包括 IAM Identity Center 中相应用户的身份、接收 Amazon 托管应用程序的受众 (Aud),以及请求的应用程序在向接收 Amazon 托管应用程序发出请求时可以使用的范围。

  7. 请求端应用程序或其使用的驱动程序向接收端应用程序发起资源请求,并将 IAM Identity Center 生成的令牌传递给接收端应用程序。

  8. 接收端应用程序调用 IAM Identity Center 获取用户身份和在令牌中编码的范围。它还可能请求从 Identity Center 目录中获取用户属性或用户的组成员资格。

  9. 接收端应用程序使用其授权配置来确定用户是否得到授权,可访问所请求的应用程序资源。

  10. 如果用户有权访问所请求的应用程序资源,接收端应用程序会对请求做出响应。

  11. 用户的身份、代表他们执行的操作以及接收应用程序日志和事件中记录的其他 CloudTrail事件。记录这些信息的具体方式因应用程序而异。