Okta
可以将 Okta 配置为用于访问 AgentCore Gateway 和 Runtime 的身份提供商,也可以配置为用于出站资源访问的 AgentCore 身份凭证提供商。这样,您的代理就可以通过 Okta 作为身份提供者和授权服务器对代理用户进行身份验证和授权,或者您的代理获取访问由 Okta 授权的资源的凭证。
入站
要将 Okta 添加为身份提供商和授权服务器以访问 AgentCore 网关和运行时,您必须:
-
配置来自 Okta 租户的发现 URL。这有助于 AgentCore Identity 获取与您的 OAuth 授权服务器和令牌验证密钥相关的元数据。
-
输入令牌的有效
aud声明。这有助于验证来自您的 IdP 的代币,并允许访问包含预期声明的代币。
配置 Okta 以进行入站身份验证
-
打开 Okta 开发者控制台。
-
在左侧导航栏中,选择应用程序。
-
选择创建应用程序集成。
-
选择 OIDC-OpenID Connect 作为应用程序的登录方式。
-
选择 Web 应用程序作为您的应用程序类型。
-
提供应用程序的名称。
-
根据需要选择授权码 and/or 客户端凭证。
-
对于Sign-in 重定向 URI,请添加将接收 Okta 令牌的应用程序端点。
-
根据需要根据需要调整 “任务” 部分。
-
选择保存。
-
创建一个 Okta API 来代表你的应用程序:
-
在左侧导航栏中,选择 “安全”。
-
前往 API 并选择 “添加授权服务器”。
-
按照流程创建专用于您的 Okta 租户的授权服务器。
-
创建授权服务器后,在概述页面上选择 “访问策略” 选项卡以配置相应的访问策略。
-
为应用程序所需的授权服务器定义必要的自定义范围。
-
-
为您的 Okta 租户构建发现网址:
https://your-tenant.okta.com/oauth2/your-authorization-server -
使用以下值配置入站身份验证:
-
发现 URL:在上一步中构造的 URL
-
允许的受众:您在步骤 11 中创建 API 时提供的受众价值
-
有关更多详细信息,请参阅 Okta 的文档
在访问令牌声明中添加 client_id 声明
默认情况下,Okta 不client_id将其作为标准声明包含在其代币中。要在令牌中填充声明,您需要通过用于发行令牌的授权服务器对声明进行自定义。
向访问令牌添加 client_id 声明
-
在左侧导航栏中,选择 “安全”。转到 API,然后选择要用于应用程序的授权服务器。
-
在授权服务器的详细信息页面中,选择声明选项卡,然后选择添加声明。
-
将新的索赔命名为 client_id 并将该值设置为 app.clientId。
-
将 “包含在令牌类型中” 设置为 “访问令牌”。
-
选择保存。
有关更多详细信息,请参阅 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,请使用自定义
{ "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 中。
-
登录 Okta 开发者控制台并打开您在步骤 1 中创建的 OIDC 应用程序。
-
打开 “常规” 选项卡并编辑 “登录” 设置。
-
添加返回的
callbackUrl值CreateOauth2CredentialProvider以Sign-in 重定向 URI。 -
选择保存。