

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

# 通过可信令牌发布者使用应用程序
<a name="using-apps-with-trusted-token-issuer"></a>

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

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

**Topics**
+ [可信令牌发布者概述](#trusted-token-issuer-overview)
+ [针对可信令牌发布者的先决条件和注意事项](#trusted-token-issuer-prerequisites)
+ [JTI 声明详细信息](#trusted-token-issuer-configuration-jti-claim)
+ [可信令牌发布者的配置设置](trusted-token-issuer-configuration-settings.md)
+ [设置可信令牌发布者](setuptrustedtokenissuer.md)
+ [身份增强型 IAM 角色会话](trustedidentitypropagation-identity-enhanced-iam-role-sessions.md)

## 可信令牌发布者概述
<a name="trusted-token-issuer-overview"></a>

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

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

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

**重要**  
选择一个 OAuth 2.0 授权服务器添加为可信令牌发行者是一个需要仔细考虑的安全决定。仅选择您信任的可信令牌发布者执行以下任务：  
对令牌中指定的用户进行身份验证。
授权该用户访问接收端应用程序。
生成一个令牌，让 IAM Identity Center 可以将它交换成 IAM Identity Center 创建的令牌。

## 针对可信令牌发布者的先决条件和注意事项
<a name="trusted-token-issuer-prerequisites"></a>

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

  您必须配置 OAuth 2.0 授权服务器（可信令牌颁发者）。尽管可信令牌发布者通常是您用作 IAM Identity Center 身份源的身份提供者，但也存在其他情况。有关如何设置可信令牌发布者的信息，请参阅相关身份提供者的文档。
**注意**  
您最多可以配置 10 个可信令牌发布者，将它们与 IAM Identity Center 搭配使用，为此，您只需将可信令牌发布者中每个用户的身份映射到 IAM Identity Center 中的相应用户即可。
+ 创建令牌的 OAuth 2.0 授权服务器（可信令牌颁发者）必须具有 [OpenID Connect (OIDC)](https://openid.net/specs/openid-connect-discovery-1_0.html) 发现端点，IAM Identity Center 可以使用该终端节点来获取用于验证令牌签名的公钥。有关更多信息，请参阅 [OIDC 发现端点 URL（发布者 URL）](trusted-token-issuer-configuration-settings.md#oidc-discovery-endpoint-url)。
+ **由可信令牌发布者颁发的令牌**

  来自可信令牌发布者的令牌必须满足以下要求：
  + 令牌必须使用 RS256算法进行签名并采用 [JSON 网络令牌 (JWT)](https://datatracker.ietf.org/doc/html/rfc7519#section-3) 格式。
  + 令牌必须包含以下声明：
    + [发布者](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.1)（iss）– 颁发令牌的实体。此值必须与可信令牌发布者的 OIDC 发现端点（发布者 URL）中配置的值相匹配。
    + [主体](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.2)（sub）– 经过身份验证的用户。
    + [受众](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.3)（aud）– 令牌的预期接收者。将令牌与来自 IAM Identity Center 的令牌交换后会访问的 AWS 服务 。有关更多信息，请参阅 [Aud 声明](trusted-token-issuer-configuration-settings.md#trusted-token-issuer-aud-claim)。
    + [到期时间](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.4)（exp）– 令牌到期的时间。
  + 令牌可以是身份令牌，也可以是访问令牌。
  + 令牌必须包含一个与一名 IAM Identity Center 用户具有唯一对应关系的属性。
**注意**  
不支持在 from JWTs 中Microsoft Entra ID使用自定义签名密钥。如果要将 Microsoft Entra ID 令牌与可信令牌发布者配合使用，请勿使用自定义签名密钥。
+ **可选声明**

  IAM Identity Center 支持 RFC 7523 中定义的所有可选声明。有关更多信息，请参阅此 RFC 的[第 3 节：JWT 格式和处理要求](https://datatracker.ietf.org/doc/html/rfc7523#section-3)。

  例如，令牌可以包含 [JTI (JWT ID) 声明](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.7)。此声明（如果存在）可以防止具有相同 JTI 的令牌被重复用于令牌交换。有关 JTI 声明的更多信息，请参阅 [JTI 声明详细信息](#trusted-token-issuer-configuration-jti-claim)。
+ **使 IAM Identity Center 与可信令牌发布者协同工作的配置**

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

  为此，您必须执行以下任一操作：
  + 使用跨域身份管理系统 (SCIM) 2.0 协议，将用户同步到 IAM Identity Center。
  + 直接在 IAM Identity Center 创建用户。

## JTI 声明详细信息
<a name="trusted-token-issuer-configuration-jti-claim"></a>

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

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

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

# 可信令牌发布者的配置设置
<a name="trusted-token-issuer-configuration-settings"></a>

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

**Topics**
+ [OIDC 发现端点 URL（发布者 URL）](#oidc-discovery-endpoint-url)
+ [属性映射](#trusted-token-issuer-attribute-mappings)
+ [Aud 声明](#trusted-token-issuer-aud-claim)

## OIDC 发现端点 URL（发布者 URL）
<a name="oidc-discovery-endpoint-url"></a>

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

**注意**  
必须粘贴发现端点 URL 中直至 `.well-known/openid-configuration` *前面的部分*。如果 `.well-known/openid-configuration` 包含在 URL 中，则可信令牌发布者配置将不起作用。因为 IAM Identity Center 不会验证此 URL，所以，如果 URL 的格式不正确，则可信令牌发布者的设置将失败，且不会发出通知。  
OIDC 发现端点 URL 只能通过端口 80 和 443 进行访问。

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

## 属性映射
<a name="trusted-token-issuer-attribute-mappings"></a>

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

## Aud 声明
<a name="trusted-token-issuer-aud-claim"></a>

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

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

# 设置可信令牌发布者
<a name="setuptrustedtokenissuer"></a>

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

**Topics**
+ [协调管理角色和职责](#coordinating-administrative-roles-responsibilities)
+ [设置可信令牌发布者的任务](#setuptrustedtokenissuer-tasks)
+ [如何向 IAM Identity Center 控制台添加可信令牌发布者](#how-to-add-trustedtokenissuer)
+ [如何在 IAM Identity Center 控制台中查看或编辑可信令牌发布者设置](#view-edit-trusted-token-issuers)
+ [使用可信令牌发布者的应用程序的设置过程和请求流程](#setuptrustedtokenissuer-setup-process-request-flow)

## 协调管理角色和职责
<a name="coordinating-administrative-roles-responsibilities"></a>

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

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

有关更多信息，请参阅 [设置可信令牌发布者的任务](#setuptrustedtokenissuer-tasks)。


****  

| 角色 | 执行这些任务 | 协调对象 | 
| --- | --- | --- | 
| IAM Identity Center 管理员 |  将外部 IdP 作为可信令牌发布者添加到 IAM Identity Center 控制台。 帮助在 IAM Identity Center 和外部 IdP 之间设置正确的属性映射。 当可信令牌颁发者添加到 IAM Identity Center 控制台时，通知 AWS 服务管理员。  |  外部 IdP（可信令牌发布者）管理员 AWS 服务管理员  | 
| 外部 IdP（可信令牌发布者）管理员 |  配置外部 IDP，以颁发令牌。 帮助在 IAM Identity Center 和外部 IdP 之间设置正确的属性映射。 向 AWS 服务管理员提供受众名称（Aud 声明）。  |  IAM Identity Center 管理员 AWS 服务管理员  | 
| AWS 服务管理员 |  检查 AWS 服务控制台中是否有受信任的令牌发行者。在 IAM Identity Center 管理员将其添加到 IAM Identity Center 控制台后，可信令牌发行者将在 AWS 服务控制台中可见。 将 AWS 服务配置为使用可信令牌发行者。  |  IAM Identity Center 管理员 外部 IdP（可信令牌发布者）管理员  | 

## 设置可信令牌发布者的任务
<a name="setuptrustedtokenissuer-tasks"></a>

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

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

1. 将@@ **可信令牌颁发者添加到 IAM Id** entity Center — IAM 身份中心管理员[使用 IAM 身份中心控制台添加可信令牌颁发者](#how-to-add-trustedtokenissuer)或[APIs](https://docs.aws.amazon.com/singlesignon/latest/APIReference/API_Operations.html)。此配置需要指定以下内容：
   + 可信令牌发布者的名称。
   + OIDC 发现端点 URL（在 IAM Identity Center 控制台中，此 URL 称为*发布者 URL*）。发现端点只能通过端口 80 和 443 进行访问。
   + 供用户查询的属性映射。此属性映射用于可信令牌发布者生成的令牌中的声明。声明中的值用于搜索 IAM Identity Center。搜索使用指定的属性检索 IAM Identity Center 中的单个用户。

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

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

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

   受信任的代币发行者在其发行的代币中放置澳元索赔值，以表明该代币打算供该 AWS 服务使用。要获取此值，请联系可信令牌发布者管理员。

## 如何向 IAM Identity Center 控制台添加可信令牌发布者
<a name="how-to-add-trustedtokenissuer"></a>

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

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

1. 打开 [IAM Identity Center 控制台](https://console.aws.amazon.com/singlesignon)。

1. 选择**设置**。

1. 在**设置**页面上，选择**身份验证**选项卡。

1. 在**可信令牌发布者**下，选择**创建可信令牌发布者**。

1. 在**设置外部 IdP 以发布可信令牌**页面的**可信令牌发布者详细信息**下，执行以下操作：
   + 在**发布者 URL**中，指定将为可信身份传播发布令牌的外部 IdP 的 [OIDC 发现 URL](trusted-token-issuer-configuration-settings.md#oidc-discovery-endpoint-url)。必须指定发现端点 URL 中直至 `.well-known/openid-configuration` 前面的部分。外部 IdP 的管理员可以提供此 URL。
**注意**  
注意：此 URL 必须与为可信身份传播颁发的令牌中的发布者 (iss) 声明中的 URL 相匹配。
   + 在**可信令牌发布者名称**中，输入一个名称，以便在 IAM Identity Center 和应用程序控制台中识别该可信令牌发布者。

1. 在**映射属性**下，执行以下操作：
   + 对于**身份提供商属性**，从列表中选择一个属性，以映射到 IAM Identity Center 身份存储中的属性。
   + 对于 **IAM Identity Center** 属性，为属性映射选择相应的属性。

1. 在**标签（可选）**下，选择**添加新标签**，为**键**和**值**（可选）指定值。

   有关标签的信息，请参阅 [为资源添加标签 AWS IAM Identity Center](tagging.md)。

1. 选择**创建可信令牌发布者**。

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

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

## 如何在 IAM Identity Center 控制台中查看或编辑可信令牌发布者设置
<a name="view-edit-trusted-token-issuers"></a>

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

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

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

1. 打开 [IAM Identity Center 控制台](https://console.aws.amazon.com/singlesignon)。

1. 选择**设置**。

1. 在**设置**页面上，选择**身份验证**选项卡。

1. 在**可信令牌发布者**下，选择要查看或编辑的可信令牌发布者。

1. 选择**操作**，然后选择**编辑**。

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

1. 选择**保存更改**。

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

## 使用可信令牌发布者的应用程序的设置过程和请求流程
<a name="setuptrustedtokenissuer-setup-process-request-flow"></a>

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

![\[使用可信令牌发布者进行可信身份传播的应用程序的设置过程和请求流程\]](http://docs.aws.amazon.com/zh_cn/singlesignon/latest/userguide/images/trusted-identity-propagation-trusted-token-issuer-request-flow.png)


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

1. 设置 IAM Identity Center 和接收 AWS 托管应用程序以使用可信令牌颁发者。有关信息，请参阅[设置可信令牌发布者的任务](#setuptrustedtokenissuer-tasks)。

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

1. 发出请求的应用程序向可信令牌颁发者请求令牌，以向接收的 AWS 托管应用程序发起请求。如果用户尚未进行身份验证，此过程会触发身份验证流程。令牌包含以下信息：
   + 用户的主体 (Sub)。
   + IAM Identity Center 用于在 IAM Identity Center 查找相应用户的属性。
   + 受众 (Aud) 声明，其中包含可信令牌发布者与接收端 AWS 托管应用程序相关联的值。如果存在其他声明，IAM Identity Center 将不会使用它们。

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

1. IAM Identity Center 使用 OIDC 发现端点获取可用于验证令牌真实性的公钥。然后，IAM Identity Center 会执行以下操作：
   + 验证令牌。
   + 搜索 Identity Center 目录。为此，IAM Identity Center 会使用令牌中指定的映射属性。
   + 验证用户是否被授权访问接收端应用程序。如果将 AWS 托管应用程序配置为要求向用户和组分配任务，则用户必须对应用程序进行直接分配或基于群组的分配；否则请求将被拒绝。如果 AWS 托管应用程序配置为不需要用户和组分配，则处理将继续进行。
**注意**  
AWS 服务具有默认设置配置，用于确定是否需要为用户和组进行分配。如果您计划将这些应用程序用于可信身份传播，我们建议不要修改它们的**需要分配**设置。即使您配置了允许用户访问特定应用程序资源的细粒度权限，修改**需要分配**设置也可能会导致意外行为，包括中断用户对这些资源的访问。
   + 验证发出请求的应用程序是否已配置为对接收的 AWS 托管应用程序使用有效的范围。

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

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

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

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

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

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

# 身份增强型 IAM 角色会话
<a name="trustedidentitypropagation-identity-enhanced-iam-role-sessions"></a>

[AWS Security Token Service](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_sts-comparison.html)（STS）使应用程序能够获得身份增强型 IAM 角色会话。身份增强型角色会话具有一个额外的身份上下文，该上下文将用户标识符带到它所调 AWS 服务 用的中。 AWS 服务 可以在 IAM Identity Center 中查找用户的群组成员资格和属性，并使用它们来授权用户访问资源。

AWS 应用程序通过向 AWS STS [AssumeRole](https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html)API 操作发出请求并在请求的`ProvidedContexts`参数中传递带有用户标识符 (`userId`) 的上下文断言来获取身份增强型角色会话。`AssumeRole`该上下文断言是从响应 [https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateTokenWithIAM.html](https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateTokenWithIAM.html) `SSO OIDC` 请求而收到的 `idToken` 声明中获取的。当 AWS 应用程序使用身份增强型角色会话访问资源时，会 CloudTrail 记录`userId`、启动会话和采取的操作。有关更多信息，请参阅 [身份增强型 IAM 角色会话记录](#trustedidentitypropagation-identity-enhanced-iam-role-session-logging)。

**Topics**
+ [身份增强型 IAM 角色会话的类型](#types-identity-enhanced-iam-role-sessions)
+ [身份增强型 IAM 角色会话记录](#trustedidentitypropagation-identity-enhanced-iam-role-session-logging)

## 身份增强型 IAM 角色会话的类型
<a name="types-identity-enhanced-iam-role-sessions"></a>

AWS STS 可以创建两种不同类型的身份增强型 IAM 角色会话，具体取决于为请求提供的上下文断言。`AssumeRole`已从 IAM Identity Center 获取身份令牌的应用程序，可向 IAM 角色会话添加 `sts:identiy_context`（推荐）或 `sts:audit_context`（为向后兼容提供支持）。身份增强型 IAM 角色会话只能采用这些上下文断言中的一个，不能同时采用两者。

### 通过 `sts:identity_context` 创建的身份增强型 IAM 角色会话
<a name="role_session_sts_identity_context"></a>

当身份增强型角色会话包含 `sts:identity_context` 时，被调用的 AWS 服务 会决定资源授权是基于角色会话中代表的用户，还是基于角色。支持基于用户的授权的 AWS 服务 ，可为应用程序管理员提供向用户或用户所属组分配访问权限的控制。

AWS 服务 不支持基于用户的授权的，请忽略。`sts:identity_context` CloudTrail 记录 IAM Identity Center 用户的用户 ID 以及该角色采取的所有操作。有关更多信息，请参阅 [身份增强型 IAM 角色会话记录](#trustedidentitypropagation-identity-enhanced-iam-role-session-logging)。

要从中获取此类身份增强型角色会话 AWS STS，应用程序使用[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)请求参数在请求中提供该`sts:identity_context`字段的`ProvidedContexts`值。使用 `arn:aws:iam::aws:contextProvider/IdentityCenter` 作为 `ProviderArn` 的值。

有关授权行为的更多信息，请参阅接收 AWS 服务文档。

### 通过 `sts:audit_context` 创建的身份增强型 IAM 角色会话
<a name="role_session_sts_audit_context"></a>

过去`sts:audit_context`，用于启用 AWS 服务 记录用户身份，而不用它来做出授权决定。 AWS 服务 现在能够使用单一上下文-`sts:identity_context`-来实现这一目标并做出授权决定。我们建议在所有新的可信身份传播部署中使用 `sts:identity_context`。

## 身份增强型 IAM 角色会话记录
<a name="trustedidentitypropagation-identity-enhanced-iam-role-session-logging"></a>

向 AWS 服务 使用身份增强型 IAM 角色会话的用户发出请求时，用户的 IAM 身份中心`userId`将登录到该`OnBehalfOf`元素 CloudTrail 中。事件的登录方式 CloudTrail 因而异 AWS 服务。并非所有 AWS 服务 都会记录 `onBehalfOf` 元素。

以下是向 AWS 服务 使用身份增强角色会话发出的请求如何登录的示例。 CloudTrail

```
"userIdentity": {
      "type": "AssumedRole",
      "principalId": "AROAEXAMPLE:MyRole",
      "arn": "arn:aws:sts::111111111111:assumed-role/MyRole/MySession",
      "accountId": "111111111111",
      "accessKeyId": "ASIAEXAMPLE",
      "sessionContext": {
        "sessionIssuer": {
            "type": "Role",
            "principalId": "AROAEXAMPLE",
            "arn": "arn:aws:iam::111111111111:role/MyRole",
            "accountId": "111111111111",
            "userName": "MyRole"
        },
        "attributes": {
            "creationDate": "2023-12-12T13:55:22Z",
            "mfaAuthenticated": "false"
        }
    },
    "onBehalfOf": {
        "userId": "11111111-1111-1111-1111-1111111111",
        "identityStoreArn": "arn:aws:identitystore::111111111111:identitystore/d-111111111"
    }
}
```