对 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 软件开发套件 (SDKs)。为了使这些应用程序能够获得证书,IAM Identity Center 支持以下 OAuth 2.0 流程的部分内容:

  • 采用代码交换验证密钥(Proof Key for Code Exchange,PKCE)的授权码授予(RFC 6749RFC 7636

  • 设备授权授予(RFC 8628

注意

这些授权类型只能用于支持此功能 Amazon Web Services 服务 的授予类型。这些服务可能并非在所有 Amazon Web Services 区域中都支持此授权类型。有关地区差异, Amazon Web Services 服务 请参阅相关文档。

OpenID Connect (OIDC) 是一种基于 2.0 框架的身份验证协议。 OAuthOIDC 指定了如何使用 OAuth 2.0 进行身份验证。通过 IAM Identity Center OIDC 服务 APIs,应用程序注册一个 OAuth 2.0 客户端,并使用其中一个流程获取访问令牌,该令牌为受保护的 IAM Identity Center 提供权限。 APIs应用程序会指定访问范围,声明其预期的 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 Services 服务 以确定 Amazon 托管应用程序的区域可用性以及您要使用的 IAM Identity Center 实例。

要使用使用 OAuth 2.0 流程的应用程序,最终用户必须输入应用程序连接的 URL,并向您的 IAM Identity Center 实例注册。根据应用程序的不同,作为管理员的您必须向用户提供 Amazon Web Services 访问门户 URL 或 IAM Identity Center 实例的发布者 URL。您可以在 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 第 3.3 节(RFC 6749)中定义的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 身份中心