

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

# Okta
<a name="identity-idp-okta"></a>

Okta 可以配置为用于访问 AgentCore 网关和运行时的身份提供商，也可以配置为用于出站资源访问的 AgentCore 身份凭证提供商。这允许您的代理使用 Okta 作为身份提供商和授权服务器对代理用户进行身份验证和授权，或者您的代理获得访问由 Okta 授权的资源的凭证。

## 入站
<a name="identity-idp-okta-inbound"></a>

要将 Okta 添加为用于访问 AgentCore Gateway 和 Runtime 的身份提供商和授权服务器，您必须：
+ 配置来自您的 Okta 租户的发现 URL。这有助于 AgentCore Identity 获取与您的 OAuth 授权服务器和令牌验证密钥相关的元数据。
+ 输入代币的有效`aud`索赔。这有助于验证来自您的 IdP 的令牌，并允许访问包含预期声明的令牌。

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

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

1. 在左侧导航栏中，选择**应用程序**。

1. 选择**创建应用程序集成**。

1. 选择 ** OIDC-OpenID Connect ** 作为应用程序的登录方法。

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

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

1. **根据您的需要选择**授权码** and/or **客户证书。

1. 对于**Sign-in 重定向 URI，请**添加您的应用程序终端节点，该终端节点将接收 Okta 令牌。

1. 根据需要调整**任务**部分。

1. 选择**保存**。

1. 创建 Okta API 来代表您的应用程序：
   + 在左侧导航栏中，选择 “**安全” **。
   + 转到 ** API ** 并选择 “**添加授权服务器” **。
   + 按照流程创建专用于您的 Okta 租户的授权服务器。
   + 创建授权服务器后，在概述页面上选择 “**访问策略**” 选项卡以配置相应的访问策略。
   + 为您的应用程序所需的授权服务器定义必要的自定义范围。

1. 为您的 Okta 租户构造发现 URL：

   ```
   https://your-tenant.okta.com/oauth2/your-authorization-server
   ```

1. 使用以下值配置入站身份验证：
   +  **发现 URL：**在上一步中构造的 URL
   +  **允许**的受众群体：您在步骤 11 中创建 API 时提供的受众价值

有关更多详细信息，请参阅 [ Okta 的文档](https://developer.okta.com/docs/concepts/oauth-openid/)。

### 在访问令牌声明中添加 client\_id 声明
<a name="identity-idp-okta-client-id-claim"></a>

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

 **为访问令牌添加 client\_id 声明 ** 

1. 在左侧导航栏中，选择 “**安全” **。转到 ** API ** 并选择您打算用于应用程序的授权服务器。

1. 在授权服务器的详细信息页面中，选择**索赔**选项卡，然后选择**添加声明**。

1. 将新声明命名为 ** client\_id ** 并将该值设置为 app.clientID。** **

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

1. 选择**保存**。

有关更多详细信息，请参阅 [ Okta 的文档](https://developer.okta.com/docs/guides/customize-tokens-returned-from-okta/main/)。

## 出站
<a name="identity-idp-okta-outbound"></a>

**注意**  
AgentCore Identity 会为您创建的每个凭证提供商颁发唯一的 OAuth2 回调 URL。独特的回调 URL 支持会话绑定，通过确保授权响应只能针对发起该请求的特定凭证提供商进行兑换，从而保护 OAuth2 授权码交换免受跨提供商重放和 CSRF-style 攻击。由于每个提供商的网址都是唯一的，所以你要等到打电话**之后才**会知道`CreateOauth2CredentialProvider`。首先创建您的 Okta OIDC 应用程序，然后在 Ident AgentCore ity 发布回调 URL 后返回 Okta 开发者控制台注册回调 URL。

 **第 1 步：创建 Okta OIDC 应用程序 ** 

按照[入站](#identity-idp-okta-inbound)部分中的步骤创建您的 Okta OIDC 应用程序和授权服务器。当在应用程序设置**中提示输入**Sign-in 重定向 URI 时，将该字段暂时留空——您将在步骤 3 中添加唯一的回调 URL。

 **第 2 步：创建 AgentCore 身份凭证提供商 ** 

要在 I AgentCore dentity 中将 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](https://developer.okta.com/docs/guides/set-up-token-exchange/main/)，请使用自定义提供商进行高级配置。有关详细信息，请参阅使用 Id AgentCore entity 进行[On-behalf-of 代币交换](on-behalf-of-token-exchange.md)。

```
{
  "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](https://docs.amazonaws.cn/bedrock-agentcore-control/latest/APIReference/API_CreateOauth2CredentialProvider.html)响应包含一个`callbackUrl`字段。此网址是该凭证提供商所独有的，看起来像:`https://bedrock-agentcore.us-east-1.amazonaws.com/identities/oauth2/callback/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`. 保存此值以供下一步使用。

 **第 3 步：向 Okta 注册唯一的回传 URL ** 

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

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

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

1. 将返回的`callbackUrl`值`CreateOauth2CredentialProvider`添加到**Sign-in 重定向 URI **。

1. 选择**保存**。