

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

Okta 可以設定為用於存取 AgentCore Gateway 和執行期的身分提供者，或用於傳出資源存取的 AgentCore Identity 憑證提供者。這可讓您的代理程式以 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. 選擇 **Create App Integration** (建立應用程式整合)。

1. 選擇 **OIDC - OpenID Connect** 作為應用程式的登入方法。

1. 選擇 **Web 應用程式**做為您的應用程式類型。

1. 為您的應用程式提供名稱。

1. 根據您的需求選取**授權碼**和/或**用戶端登入**資料。

1. 對於**登入重新導向 URIs**，新增將接收 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 型攻擊。由於每個提供者的 URL 都是唯一的，因此在呼叫 **之前**，您都不會知道它`CreateOauth2CredentialProvider`。首先建立 Okta OIDC 應用程式，然後返回 Okta 開發人員主控台，在 AgentCore Identity 發出回呼 URL 後註冊回呼 URL。

 **步驟 1：建立 Okta OIDC 應用程式** 

遵循[傳入](#identity-idp-okta-inbound)區段中的程序來建立 Okta OIDC 應用程式和授權伺服器。在應用程式設定中提示**登入重新導向 URIs** 時，請將 欄位暫時保留空白，您將在步驟 3 中新增唯一的回呼 URL。

 **步驟 2：建立 AgentCore Identity 登入資料提供者** 

若要在 AgentCore Identity 中將 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 on-behalf-of權杖交換](https://developer.okta.com/docs/guides/set-up-token-exchange/main/)，請使用自訂提供者進行進階組態。如需詳細資訊，請參閱[On-behalf-of杖與 AgentCore Identity 交換](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.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreateOauth2CredentialProvider.html) 回應包含 `callbackUrl` 欄位。此 URL 對此登入資料提供者是唯一的，如下所示：`https://bedrock-agentcore.us-east-1.amazonaws.com/identities/oauth2/callback/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`。儲存此值以供下一個步驟使用。

 **步驟 3：向 Okta 註冊唯一的回呼 URL** 

返回 Okta 開發人員主控台，並將唯一的回呼 URL 新增至應用程式的**登入重新導向 URIs**。

1. 登入 Okta 開發人員主控台，並開啟您在步驟 1 中建立的 OIDC 應用程式。

1. 開啟**一般**索引標籤並編輯 **LOGIN** 設定。

1. 將 傳回`callbackUrl`的值新增至`CreateOauth2CredentialProvider`**登入重新導向 URIs**。

1. 選擇**儲存**。