单点登录访问 SAML 2.0 和 OAuth 2.0 应用程序 - AWS IAM Identity Center

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

单点登录访问 SAML 2.0 和 OAuth 2.0 应用程序

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

SAML 2.0

SAML2.0 是一种行业标准,用于在SAML机构(称为身份提供者或 IdP)和 SAML 2.0 使用者(称为服务提供商或 SP)之间安全地交换传递用户信息的SAML断言。 IAMIdentity Center 使用此信息为有权在访问门户中使用应用程序的用户提供联合单点登录 AWS 访问权限。

OAuth 2.0

OAuth2.0 是一种允许应用程序在不共享密码的情况下安全地访问和共享用户数据的协议。这项功能提供了一种安全、标准化的方式,让用户允许应用程序访问其资源。不同的 OAuth 2.0 拨款流程为访问提供了便利。

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

  • 授予带有验证密钥的授权码以进行代码交换 (PKCE) (RFC6749 和 RFC7 6 36)

  • 设备授权授权 (RFC8628)

注意

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

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

使用 OAuth 2.0 拨款流程

OAuth2.0 拨款流只能通过支持资金流的 AWS 托管应用程序获得。要使用 OAuth 2.0 流程,您的 Ident IAM ity Center 实例和您使用的任何 AWS 受支持的托管应用程序都必须部署在单个流程中 AWS 区域。请参阅每个应用程序的文档, AWS 服务 以确定 AWS 托管应用程序的区域可用性以及您要使用的 Ident IAM ity Center 实例。

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

最终用户登录应用程序和给予同意的体验取决于应用程序使用的是 授权码授予 PKCE,还是 设备授权授予

授权码授予 PKCE

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

  1. 打开浏览器窗口。

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

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

    • 应用程序的名称

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

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

设备授权授予

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

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

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

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

    • 应用程序的名称

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

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

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

访问范围

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

OAuth2.0 客户端使用 OAuth2.0 第 3.3 节 (RFC6749) 中定义的scope值来指定访问令牌请求的权限。在请求访问令牌时,客户端最多可以指定 25 个范围。当用户在授权码授予PKCE或设备授权授予流程中提供同意时,Ident IAM ity Center 会将范围编码到它返回的访问令牌中。

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

注册公共客户端时IAM身份中心OIDC服务支持的访问范围

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