SAML 2.0 和 OAuth 2.0 - Amazon IAM Identity Center
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

SAML 2.0 和 OAuth 2.0

IAM Identity Center 使您能够为用户提供对 SAML 2.0 或 OAuth 2.0 应用程序的单点登录访问权限。以下主题提供了对 SAML 2.0 和 OAuth 2.0 的综合概述。

SAML 2.0

SAML 2.0 是一种用于安全交换 SAML 断言的行业标准,它在 SAML 机构(称为身份提供商或 IdP)与 SAML 2.0 使用者(称为服务提供商或 SP)之间传递用户的相关信息。IAM Identity Center 使用这些信息为有权在访问门户中使用应用程序的用户提供联合单点登录 Amazon Web Services 访问权限。

OAuth 2.0

OAuth 2.0 协议允许应用程序在不共享密码的情况下安全地访问和共享用户数据。这项功能提供了一种安全、标准化的方式,让用户允许应用程序访问其资源。通过不同的 OAuth 2.0 授予流程,访问变得更加便利。

IAM Identity Center 允许在公共客户端上运行的应用程序检索临时证书,以便以编程方式代表其用户访问 Amazon Web Services 账户 和服务。公共客户端通常是用于在本地运行应用程序的台式机、笔记本电脑或其他移动设备。在公共客户端上运行的 Amazon 应用程序的示例包括 Amazon Command Line Interface (Amazon CLI) Amazon Toolkit、和 Amazon 软件开发套件 (SDK)。为了使这些应用程序能够获得证书,IAM Identity Center 支持以下 OAuth 2.0 流程的部分内容:

注意

这些授权类型只能用于支持此功能 Amazon Web Services 的授予类型。这些服务可能并不完全支持这种赠款类型 Amazon Web Services 区域。有关地区差异, Amazon Web Services 请参阅相关文档。

OpenID Connect (OIDC) 是一种基于 OAuth 2.0 框架的身份验证协议。OIDC 指定了如何使用 OAuth 2.0 进行身份验证。通过 IAM Identity Center OIDC 服务 API,应用程序注册一个 OAuth 2.0 客户端,并使用其中一个流程获取访问令牌,该令牌为受 IAM 身份中心保护的 API 提供权限。应用程序指定访问范围以声明其预期的 API 用户。在您作为 IAM Identity Center 管理员配置身份源之后,您的应用程序最终用户必须完成登录过程(如果他们尚未完成登录过程)。然后,您的最终用户必须征得他们的同意,才能允许应用程序进行 API 调用。这些 API 调用是使用用户的权限进行的。作为响应,IAM Identity Center 会向应用程序返回一个访问令牌,该令牌包含用户同意的访问范围。

使用 OAuth 2.0 拨款流程

OAuth 2.0 拨款流只能通过支持这些流程的 Amazon 托管应用程序获得。要使用 OAuth 2.0 流程,您的 IAM Identity Center 实例和您使用的任何 Amazon 受支持的托管应用程序都必须部署在单个流程中。 Amazon Web Services 区域请参阅每个应用程序的文档, Amazon Web Service 以确定 Amazon 托管应用程序的区域可用性以及您要使用的 IAM Identity Center 实例。

要使用使用 OAuth 2.0 流程的应用程序,最终用户必须输入该应用程序将连接的 URL,并在您的 IAM Identity Center 实例中注册。根据应用程序的不同,作为管理员,您必须向用户提供您的 IAM Identity Center 实例的Amazon Web Services 访问门户 URL 或 IAM Identity Center 实例的发行者 UR L。您可以在 IAM Identity Center 控制台“设置” 页面上找到这两个设置。有关配置客户端应用程序的其他信息,请参阅该应用程序的文档。

登录应用程序和提供同意的最终用户体验取决于应用程序是否使用具有 PKCE 的授权代码授予设备授权授权

具有 PKCE 的授权代码授予

此流程由在装有浏览器的设备上运行的应用程序使用。

  1. 浏览器窗口打开。

  2. 如果用户尚未进行身份验证,则浏览器会将其重定向以完成用户身份验证。

  3. 身份验证后,用户将看到一个同意屏幕,其中显示以下信息:

    • 应用程序的名称

    • 应用程序请求同意使用的访问范围

  4. 用户可以取消同意流程,也可以表示同意,然后应用程序会根据用户的权限继续进行访问。

设备授权授权

在带或不带浏览器的设备上运行的应用程序均可使用此流程。当应用程序启动流程时,应用程序会提供一个 URL 和一个用户代码,用户必须稍后在流程中对其进行验证。用户代码是必要的,因为启动流程的应用程序可能运行在与用户提供同意的设备不同的设备上。该代码可确保用户同意他们在另一台设备上启动的流程。

  1. 当流程从带有浏览器的设备启动时,会打开一个浏览器窗口。当流程从没有浏览器的设备启动时,用户必须在另一台设备上打开浏览器,然后转到应用程序显示的 URL。

  2. 无论哪种情况,如果用户尚未进行身份验证,浏览器都会将他们重定向到完成用户身份验证。

  3. 身份验证后,用户将看到一个同意屏幕,其中显示以下信息:

    • 应用程序的名称

    • 应用程序请求同意使用的访问范围

    • 应用程序向用户提供的用户代码

  4. 用户可以取消同意流程,也可以表示同意,然后应用程序会根据用户的权限继续进行访问。

访问范围

作用域定义了可通过 OAuth 2.0 流程访问的服务的访问权限。作用域是服务(也称为资源服务器)对与操作和服务资源相关的权限进行分组的一种方式,它们指定 OAuth 2.0 客户端可以请求的粗粒度操作。当 OAuth 2.0 客户端向 IAM Identity Center OIDC 服务注册时,该客户端会指定范围以声明其预期操作,用户必须同意才能执行这些操作。

OAuth 2.0 客户端使用 OAuth 2.0 (RFC 6749) 第 3.3 节中定义的scope值来指定要为访问令牌请求哪些权限。客户端在请求访问令牌时最多可以指定 25 个范围。当用户在 PKCE 授权码授予或设备授权授予流程中表示同意时,IAM Identity Center 会将范围编码到它返回的访问令牌中。

Amazon 将范围添加到 IAM 身份中心以获得支持 Amazon Web Services。下表列出了注册公共客户端时 IAM Identity Center OIDC 服务支持的范围。

注册公共客户端时,IAM Identity Center OIDC 服务支持的访问范围

范围 描述 支持的服务
sso:account:access 访问 IAM Identity Center 管理型账户和权限集。 IAM Identity Center
codewhisperer:analysis 允许访问 Amazon Q 开发者代码分析。 Amazon 构建者 ID 和 IAM 身份中心
codewhisperer:completions 允许访问 Amazon Q 内联代码建议。 Amazon 构建者 ID 和 IAM 身份中心
codewhisperer:conversations 启用访问 Amazon Q 聊天的权限。 Amazon 构建者 ID 和 IAM 身份中心
codewhisperer:taskassist 允许访问 Amazon Q 开发者代理进行软件开发。 Amazon 构建者 ID 和 IAM 身份中心
codewhisperer:transformations 允许访问 Amazon Q 开发者代理以进行代码转换。 Amazon 构建者 ID 和 IAM 身份中心
codecatalyst:read_write 读取和写入您的 Amazon CodeCatalyst 资源,允许访问您的所有现有资源。 Amazon 构建者 ID 和 IAM 身份中心