View a markdown version of this page

Okta - Amazon Bedrock AgentCore

Okta

可以将 Okta 配置为用于访问 AgentCore Gateway 和 Runtime 的身份提供商,也可以配置为用于出站资源访问的 AgentCore 身份凭证提供商。这样,您的代理就可以通过 Okta 作为身份提供者和授权服务器对代理用户进行身份验证和授权,或者您的代理获取访问由 Okta 授权的资源的凭证。

入站

要将 Okta 添加为身份提供商和授权服务器以访问 AgentCore 网关和运行时,您必须:

  • 配置来自 Okta 租户的发现 URL。这有助于 AgentCore Identity 获取与您的 OAuth 授权服务器和令牌验证密钥相关的元数据。

  • 输入令牌的有效aud声明。这有助于验证来自您的 IdP 的代币,并允许访问包含预期声明的代币。

配置 Okta 以进行入站身份验证

  1. 打开 Okta 开发者控制台。

  2. 在左侧导航栏中,选择应用程序

  3. 选择创建应用程序集成

  4. 选择 OIDC-OpenID Connect 作为应用程序的登录方式。

  5. 选择 Web 应用程序作为您的应用程序类型。

  6. 提供应用程序的名称。

  7. 根据需要选择授权码 and/or 客户端凭证

  8. 对于Sign-in 重定向 URI,请添加将接收 Okta 令牌的应用程序端点。

  9. 根据需要根据需要调整 “任务” 部分。

  10. 选择保存

  11. 创建一个 Okta API 来代表你的应用程序:

    • 在左侧导航栏中,选择 “安全”。

    • 前往 API 并选择 “添加授权服务器”。

    • 按照流程创建专用于您的 Okta 租户的授权服务器。

    • 创建授权服务器后,在概述页面上选择 “访问策略” 选项卡以配置相应的访问策略。

    • 为应用程序所需的授权服务器定义必要的自定义范围。

  12. 为您的 Okta 租户构建发现网址:

    https://your-tenant.okta.com/oauth2/your-authorization-server
  13. 使用以下值配置入站身份验证:

    • 发现 URL:在上一步中构造的 URL

    • 允许的受众:您在步骤 11 中创建 API 时提供的受众价值

有关更多详细信息,请参阅 Okta 的文档

在访问令牌声明中添加 client_id 声明

默认情况下,Okta 不client_id将其作为标准声明包含在其代币中。要在令牌中填充声明,您需要通过用于发行令牌的授权服务器对声明进行自定义。

向访问令牌添加 client_id 声明

  1. 在左侧导航栏中,选择 “安全”。转到 API,然后选择要用于应用程序的授权服务器。

  2. 在授权服务器的详细信息页面中,选择声明选项卡,然后选择添加声明

  3. 将新的索赔命名为 client_id 并将该值设置为 app.clientId。

  4. 将 “包含在令牌类型中” 设置为 “访问令牌”。

  5. 选择保存

有关更多详细信息,请参阅 Okta 的文档

出站

注意

AgentCore Identity 会为您创建的每个凭据提供商发出唯一的 OAuth2 回调 URL。唯一的回调 URL 支持会话绑定,通过确保授权响应只能针对启动它的特定凭据提供商兑换,从而保护 OAuth2 授权码交换免受跨提供商重播和 CSRF-style 攻击。由于每个提供商的网址是唯一的,因此您要等到致电才能知道CreateOauth2CredentialProvider。首先创建 Okta OIDC 应用程序,然后在 Ident AgentCore ity 发布回调网址后返回 Okta 开发者控制台注册回传网址。

第 1 步:创建 Okta OIDC 应用程序

按照 “入站” 部分中的步骤创建 Okta OIDC 应用程序和授权服务器。当应用程序设置中提示您输入Sign-in 重定向 URI 时,请暂时将该字段留空 — 您将在步骤 3 中添加唯一的回传 URL。

步骤 2:创建 AgentCore 身份凭证提供商

要在 Ident AgentCore ity 中将 Okta 配置为出站资源提供者,请使用以下命令:

{ "name": "Okta", "credentialProviderVendor": "OktaOauth2", "oauth2ProviderConfigInput" : { "includedOauth2ProviderConfig": { "clientId": "your-client-id", "clientSecret": "your-client-secret", "authorizationEndpoint": "https://your-tenant.okta.com/oauth2/your-authorization-server/v1/authorize", "tokenEndpoint": "https://your-tenant.okta.com/oauth2/your-authorization-server/v1/token", "issuer": "https://your-tenant.okta.com/oauth2/your-authorization-server" } } }

要代表令牌交换使用 Okta OAuth 2.0,请使用自定义提供程序进行高级配置。有关详细信息,请参阅使用 Ident AgentCore ity 交换On-behalf-of 令牌

{ "name": "Okta", "credentialProviderVendor": "CustomOauth2", "oauth2ProviderConfigInput": { "customOauth2ProviderConfig": { "clientAuthenticationMethod": "CLIENT_SECRET_BASIC", "clientId": "your-client-id", "clientSecret": "your-client-secret", "oauthDiscovery": { "authorizationServerMetadata": { "authorizationEndpoint": "https://your-tenant.okta.com/oauth2/your-authorization-server/v1/authorize", "tokenEndpoint": "https://your-tenant.okta.com/oauth2/your-authorization-server/v1/token", "issuer": "https://your-tenant.okta.com/oauth2/your-authorization-server" } }, "onBehalfOfTokenExchangeConfig": { "grantType": "TOKEN_EXCHANGE", "tokenExchangeGrantTypeConfig": { "actorTokenContent": "NONE" } } } } }

CreateOauth2CredentialProvider响应中包含一个callbackUrl字段。此网址是该凭证提供商所独有的,看起来像:https://bedrock-agentcore.us-east-1.amazonaws.com/identities/oauth2/callback/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. 保存此值以供下一步使用。

第 3 步:向 Okta 注册唯一的回传网址

返回 Okta 开发者控制台,将唯一的回调 URL 添加到应用程序的Sign-in 重定向 URI 中。

  1. 登录 Okta 开发者控制台并打开您在步骤 1 中创建的 OIDC 应用程序。

  2. 打开 “常规” 选项卡并编辑 “登录” 设置。

  3. 添加返回的callbackUrlCreateOauth2CredentialProviderSign-in 重定向 URI

  4. 选择保存