设置外部身份提供商 (IdP) 身份验证 - AWS DevOps 代理人

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

设置外部身份提供商 (IdP) 身份验证

外部身份提供商 (IdP) 身份验证允许您的组织使用与 OIDC 兼容的现有身份提供商(例如 Okta 或 Microsoft Entra ID)来管理用户对 Agent Space Web 应用程序的访问权限。 AWS DevOps 用户直接通过您的 IdP 使用其公司证书登录,无需 AWS 使用 IAM 身份中心。

先决条件

在设置外部 IdP 身份验证之前,请确保:

  • 兼容 OIDC 的身份提供商(Okta 或 Microsoft Entra ID)

  • 管理员对您的身份提供商的访问权限

  • 访问 AWS DevOps 代理控制台的管理员权限

  • 已配置或准备创建的代理空间

工作原理

配置外部 IdP 身份验证时:

  • 用户导航到 Agent Space Web 应用程序 URL

  • 它们会被重定向到您的身份提供商的登录页面

  • 使用公司凭证进行身份验证后,他们会被重定向回 Web 应用程序

  • Web 应用程序将身份验证令牌交换为限于 Agent Space 的短期 AWS 凭证

会话的有效期最长为 8 小时。使用 OIDC 刷新令牌自动刷新凭证,无需用户重新进行身份验证。

配置外部 IdP 身份验证

步骤 1:在您的身份提供商中注册应用程序

选择您的身份提供商,然后按照相应的设置说明进行操作。

选项 A:Okta

  1. 在 Okta 管理员控制台中,导航到 “应用程序” > “应用程序”,然后选择 “创建应用程序集成

  2. 选择 OIDC-OpenID Connect 作为登录方法,选择 Web 应用程序作为应用程序类型。选择下一步

  3. 为应用程序设置描述性名称(例如,AWS DevOps Agent

  4. 在 “拨款类型” 下,确保选中以下各项:

    • 授权码(默认)

    • 刷新令牌-这是会话刷新所必需的。如果未启用,用户将无法维护会话。

注意

默认情况下,Okta 不启用刷新令牌授权类型。您必须明确启用它。

  1. 暂时将登录重定向 URIs保留为默认值 — 您将在配置代理空间后对其进行更新

  2. 在 “分配” 下,分配应具有访问权限的用户或群组

  3. 选择保存

  4. 在应用程序的 “常规” 选项卡上,记下以下值:

    • 客户端 ID

    • 客户机密钥-选择 “复制” 以安全地保存此值

  5. 记下你的 Okta 域名 ——这是你的发行商网址(例如https://dev-12345678.okta.com)。

注意

“登录” 选项卡上,确认颁发者已设置为 Okta URL(不是动态)。这样可以确保发行者 URL 稳定。

注意

请勿在授权服务器的 “声明” 选项卡中的 ID 令牌中添加群组声明。 AWS DevOps 代理不使用您的 IdP 的群组成员资格。

选项 B:微软 Entra ID

  1. 在 Azure 门户中,导航到微软 Entra ID > 应用程序注册 > 新注册

  2. 设置描述性名称(例如,AWS DevOps Agent

  3. 在 “支持的账户类型” 下,选择适合您的组织的选项(通常仅限此组织目录中的帐户

  4. 暂时将重定向 URI 留空。选择 “注册

  5. 在应用程序概述页面上,记下以下值:

    • 应用程序(客户端)ID — 在配置代理空间时用作客户端 ID

    • 目录(租户)ID — 用于构造发行者 URL

  6. 导航到 “证书和密钥” > “新建客户机密

    • 设置描述和到期时间

    • 选择 “添加” 并立即复制密钥 — 它不会再次显示

  7. Entra ID 的发行者网址遵循此格式。{tenant-id}替换为步骤 5 中的目录(租户)ID:

    • https://login.microsoftonline.com/{tenant-id}/v2.0

注意

请勿在令牌配置中启用群组的可选声明。 AWS DevOps 代理不使用您的 IdP 的群组成员资格。

步骤 2:启用带有 IdP 身份验证的操作员应用程序

  1. 在 AWS DevOps 代理控制台中,选择您的代理空间

  2. 前往 “访问权限” 选项卡

  3. 在 “用户访问权限” 下,选择 “外部身份提供商

  4. 在配置表单中,配置以下内容:

    • 身份提供商-选择您的身份提供商(Okta 或 Microsoft Entra ID)

    • 颁发者网址-您的身份提供商提供的 OIDC 颁发者网址

    • 客户端 ID — 来自您创建的 OIDC 应用程序的客户端 ID

    • 客户端密钥 — 来自 OIDC 应用程序的客户端密钥

  5. 在 “身份提供商应用程序角色名称” 下,选择以下三个选项之一:

    • 自动创建新的 DevOps 代理角色(推荐)-创建具有适当权限的新服务角色

    • 分配现有角色-使用您已经创建的现有 IAM 角色

    • 使用策略模板创建新的 DevOps 代理角色 — 使用提供的详细信息在 IAM 控制台中创建自己的角色

  6. 查看表单底部显示的回调 URL 警告提醒。复制此 URL — 您需要将其添加到身份提供商允许的重定向中, URIs 然后用户才能登录。

  7. 选择 Connect (连接)

选择 Connect 后,控制台将显示包含以下详细信息的外部身份提供者配置

  • 提供商-您选择的身份提供商

  • 颁发者网址-已配置的 OIDC 颁发者网址

  • 客户端 ID-配置的客户端 ID

  • IAM 角色 ARN — 用于用户访问的 IAM 角色

  • 回调 URL — 在您的身份提供商中将此 URL 配置为允许的重定向 URI

  • 登录 URL — 使用此 URL 通过您的身份提供商访问 Web 应用程序

第 3 步:将回传 URL 添加到您的身份提供商

Okta

  1. 在 Okta 管理员控制台中,导航到应用程序的 “常规” 选项卡

  2. 在 “登录” 下,选择 “编辑”

  3. 将回调 URL 添加为登录重定向 URI

    • https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/callback

  4. (可选)设置启动登录 URI 以启用 IdP 从 Okta 控制面板启动的登录:

    • https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/login

  5. (推荐)添加注销重定向 URI,以便在注销后将用户重定向回 Web 应用程序。否则,用户在注销时可能会看到错误页面:

    • https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome

  6. 选择保存

Microsoft Entra ID

  1. 在 Azure 门户中,导航到应用程序的身份验证页面

  2. 平台配置下,选择添加平台 > Web

  3. 输入回传 URL 作为重定向 URI

    • https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/callback

  4. (可选)添加注销重定向 URI,以便在注销后将用户重定向回 Web 应用程序:

    • https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome

  5. 选择 “配置”

步骤 4:验证配置

  1. 导航到控制台中显示的登录 URL

    • https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/login

  2. 您应该被重定向到身份提供商的登录页面

  3. 使用您的公司凭证登录

  4. 成功进行身份验证后,您将被重定向回 Agent Space Web 应用程序

更新 IdP 配置

你可以在不断开连接的情况下轮换客户端密钥:

  1. 在 AWS DevOps 代理控制台中,选择您的代理空间

  2. 前往 “访问权限” 选项卡

  3. 在 “外部身份提供商配置” 下,选择 “轮换客户端密钥

  4. 输入新的客户密钥

  5. 选择保存

要更改任何其他 IdP 配置字段(例如颁发者 URL、客户端 ID 或身份提供者),必须断开现有 IdP 的连接并配置一个新的 IdP。

用户如何访问 Agent Space Web 应用程序

配置外部 IdP 身份验证后:

  • 与授权用户共享 Agent Space Web 应用程序 URL

  • 当用户导航到该 URL 时,他们会被重定向到您的身份提供商的登录页面

  • 输入他们的凭证(如果由你的 IdP 配置,则完成 MFA)后,他们将被重定向回 Agent Space 网络应用程序

  • 会话会自动刷新 — 有关详细信息,请参阅会话管理

会话管理

Agent Space Web 应用程序的外部 IdP 会话具有以下特征:

  • 会话时长-浏览器会话持续长达 8 小时。这在 AWS DevOps 代理中不可配置。如果您的 IdP 会话生命周期超过 8 小时,则可以在用户下次访问时自动重新进行身份验证,而无需输入凭据。根据组织的安全要求配置 IdP 的会话和令牌生命周期。

  • 凭据刷新 — 使用 OIDC 刷新令牌自动刷新会话,无需用户重新进行身份验证

  • 多重身份验证-在您的身份提供商中配置时支持。IdP 在登录期间处理 MFA — 无需在代理中进行其他配置 AWS DevOps

注销行为

当用户在 Web 应用程序中单击 “注销” 时:

  1. 所有会话 cookie 都会立即被清除

  2. 用户被重定向到身份提供商的 OIDC 注销端点以终止 SSO 会话

  3. 如果配置了注销重定向 URI,则用户将被重定向回 Web 应用程序欢迎页面

撤消用户访问权限

要立即撤消用户的访问权限,您可以直接在身份提供商的管理门户中撤消他们的会话:

  • Okta — 在 Okta 管理员控制台中,导航到 “目录” > “人员”,选择用户,选择 “更多操作” > “清除用户会话”

  • Microsoft Entra ID — 在 Azure 门户中,导航到 “用户”,选择用户,然后选择 “撤消会话”

安全注意事项

客户端密钥存储 — 如果您在创建代理空间时提供了客户管理的 KMS 密钥,则使用客户管理的 KMS 密钥进行加密,否则使用服务拥有的密钥进行加密。初始配置后,它永远不会在 API 响应中返回,也不会显示在控制台中。

客户端密钥轮换 — Entra 客户端密钥具有可配置的过期时间。使用 AWS DevOps 代理控制台中的 “轮换客户端密钥” 选项设置提醒,以便在密钥到期之前轮换密钥。如果密钥过期,则在轮换密钥之前,用户将无法登录。

令牌生命周期管理 — 身份提供商颁发的令牌(访问令牌、刷新令牌)的生命周期由您的 IdP 的配置控制。我们建议在您的 IdP 中配置适当的令牌生命周期:

  • Okta — 在 “安全” > “API” > “授权服务器” > “访问策略” 下配置令牌生命周期

  • Microsoft Entra ID — 使用令牌生命周期策略配置令牌生命周期

群组声明 — 请勿在身份提供商的令牌配置中启用群组声明。 AWS DevOps 代理目前不使用您的 IdP 的群组成员资格。

用户标识符- AWS DevOps 代理使用特定于提供商的声明来唯一识别用户:

  • Okta — 使用 ID 令牌中的sub声明

  • Microsoft Entra ID — 使用 ID 令牌中的oid(对象标识符)声明

这些标识符是不可变的,会出现在 CloudTrail 日志中以供审计。

断开外部 IdP 的连接

  1. 在 AWS DevOps 代理控制台中,选择您的代理空间

  2. 前往 “访问权限” 选项卡

  3. 在 “用户访问权限” 下,选择断开连接

  4. 查看确认对话框中列出的影响并确认

断开连接将:

  • 从代理空间中删除 IdP 配置

  • 阻止用户通过外部身份提供商登录

  • 移除与 IdP 用户帐户关联的个人聊天和构件历史记录

活跃的用户会话将持续到其过期或下一次凭据刷新失败。

问题排查

  • 重定向到 IdP 失败 — 验证颁发者网址是否与您的 IdP 的 OIDC 发现端点相匹配。对于 Okta,请确保在 “登录” 选项卡上将发行者设置为 Okta URL(不是动态)。对于 Entra,请使用格式https://login.microsoftonline.com/{tenant-id}/v2.0

  • 访问被拒绝或策略错误 (Okta)-在 “配” 下验证用户或其组已分配给应用程序。选中 “登录” > “登录政策” 规则。

  • 登录后出现 IdP 配置错误-您的身份提供商未返回刷新令牌。确保已启用offline_access范围和刷新令牌授予类型:

    • Okta — 前往应用程序的 “常规” 选项卡并启用 “授权类型” 下的 “刷新令牌” 复选框

    • Entra — 前往 API 权限并确保列offline_access在委托权限下

  • 身份验证成功但网络应用显示错误 — 验证您的 IdP 中的重定向 URI 与代理控制台中 AWS DevOps 显示的回调 URL 完全匹配。

  • 身份验证失败-如果您的 IdP 中启用了群组可选声明,请将其禁用。 AWS DevOps 代理不使用团体索赔。

  • IdP 身份验证后登录失败 — 对于 Entra,应用程序清单null中未将 ver requestedAccessTokenVersion ify 设置为。对于 Okta,请验证发行者网址是否正确。

  • 单击 “注销” 后出现错误页面 (Okta) — 如果您在注销后看到post_logout_redirect_uri错误,请在 Okta 应用程序的 “常规” 选项卡中添加https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome为注销重定向 URI

  • 用户在注销后会留在身份提供者页面上 (Entra) — 要在注销后将用户重定向回 Web 应用程序,请在您的 Entra 应用程序的身份验证页面中添加https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome重定向 URI