

# Ping Identity
<a name="identity-idp-pingidentity"></a>

Ping Identity の PingOne プラットフォームは、アウトバウンドリソースアクセス用の AgentCore Identity 認証情報プロバイダーとして設定できます。これにより、エージェントは PingOne の OAuth2 サービスを通じてユーザーを認証し、PingOne API リソースのアクセストークンを取得できます。

## アウトバウンド
<a name="identity-idp-pingidentity-outbound"></a>

**注記**  
PingOne OAuth2 アプリケーションは、ユーザーフェデレーションまたは M2M OAuth2 クライアントとしてのみ設定できますが、両方として設定することはできません。

**注記**  
AgentCore Identity は、作成する認証情報プロバイダーごとに一意の OAuth2 コールバック URL を発行します。一意のコールバック URL により、セッションバインディングが有効になります。これにより、OAuth2 認可コード交換をクロスプロバイダーリプレイや CSRF 形式の攻撃から保護できます。これにより、認可レスポンスは、それを開始した特定の認証情報プロバイダーに対してのみ引き換えることができます。URL はプロバイダーごとに一意であるため、 を呼び出す**まで**わかりません`CreateOauth2CredentialProvider`。最初に PingOne OAuth2 アプリケーションを作成し、AgentCore Identity がコールバック URL を発行したらPingOne 管理者コンソールに戻ってコールバック URL を登録します。

 **ステップ 1: Ping Identity OAuth2 アプリケーションを作成する** 

次の手順を使用して PingOne OAuth2 アプリケーションをセットアップし、AgentCore Identity に必要なクライアント認証情報を取得します。ユーザーフェデレーションクライアントを設定する場合は、AgentCore Identity が一意のコールバック URL を発行した後、ステップ 3 でリダイレクト URI を登録します。

 **PingOne OAuth2 アプリケーションを設定するには** 

1. PingOne 管理者コンソールにサインインします。

1. ナビゲーションバーの**アプリケーション** で、**アプリケーション** を選択します。

1. ページで、**アプリケーション**の横にある **\+** アイコンを選択して新しいアプリケーションを作成します。

1. アプリケーションを M2M OAuth2 クライアントとして設定するには:
   + 付与タイプの**クライアント認証情報**を選択します。
   + トークンエンドポイント認証方法の**クライアントシークレットポスト**を選択します。
   + スコープを含むタブの Applications→Resources の下にカスタムリソースを作成します。次に、そのスコープを個人用**リソース**タブのアプリケーションに追加します。次に、GetResourceOauth2AccessToken の「scopes」フィールドにスコープが存在することを確認します。

1. アプリケーションをユーザーフェデレーション Oauth2 クライアントとして設定するには:
   + レスポンスタイプの**コード**を選択します。
   + グラントタイプの**認可コード**を選択します。
   + トークンエンドポイント認証方法の**クライアントシークレットの基本**を選択します。
   + 現時点ではリダイレクト URI リストを空のままにしておきます。ステップ 3 で一意のコールバック URL を追加します。

詳細については、[「Ping Identity の PingOne API ドキュメント](https://apidocs.pingidentity.com/pingone/getting-started/v1/api)」を参照してください。

 **ステップ 2: AgentCore Identity 認証情報プロバイダーを作成する** 

PingOne をアウトバウンドリソースプロバイダーとして設定するには、以下を使用します。

```
{
  "name": "PingOne",
  "credentialProviderVendor": "PingOneOauth2",
  "oauth2ProviderConfigInput" : {
    "includedOauth2ProviderConfig": {
      "clientId": "your-client-id",
      "clientSecret": "your-client-secret",
      "authorizationEndpoint": "https://auth.pingone.com/your-env-id/as/authorize",
      "tokenEndpoint": "https://auth.pingone.com/your-env-id/as/token",
      "issuer": "https://auth.pingone.com/your-env-id/as"
    }
  }
}
```

[委任に PingIdentity OAuth 2.0 トークン交換](https://docs.pingidentity.com/pingone/use_cases/p1_oauth_2_token_exchange_delegation.html)を使用するには、高度な設定にカスタムプロバイダーを使用します。詳細については、[AgentCore Identity On-behalf-of](on-behalf-of-token-exchange.md)」を参照してください。

```
{
  "name": "PingOne",
  "credentialProviderVendor": "CustomOauth2",
  "oauth2ProviderConfigInput": {
    "customOauth2ProviderConfig": {
      "clientAuthenticationMethod": "CLIENT_SECRET_BASIC",
      "clientId": "your-client-id",
      "clientSecret": "your-client-secret",
      "oauthDiscovery": {
        "authorizationServerMetadata": {
          "authorizationEndpoint": "https://auth.pingone.com/your-env-id/as/authorize",
          "tokenEndpoint": "https://auth.pingone.com/your-env-id/as/token",
          "issuer": "https://auth.pingone.com/your-env-id/as"
        }
      },
      "onBehalfOfTokenExchangeConfig": {
        "grantType": "TOKEN_EXCHANGE",
        "tokenExchangeGrantTypeConfig": {
          "actorTokenContent": "M2M"
        }
      }
    }
  }
}
```

[PingIdentity OAuth 2.0 トークン交換を偽装に使用するには](https://docs.pingidentity.com/pingone/use_cases/p1_oauth_2_token_exchange_impersonation.html)、高度な設定にカスタムプロバイダーを使用します。詳細については、[AgentCore Identity On-behalf-of](on-behalf-of-token-exchange.md)」を参照してください。

```
{
  "name": "PingOne",
  "credentialProviderVendor": "CustomOauth2",
  "oauth2ProviderConfigInput": {
    "customOauth2ProviderConfig": {
      "clientAuthenticationMethod": "CLIENT_SECRET_BASIC",
      "clientId": "your-client-id",
      "clientSecret": "your-client-secret",
      "oauthDiscovery": {
        "authorizationServerMetadata": {
          "authorizationEndpoint": "https://auth.pingone.com/your-env-id/as/authorize",
          "tokenEndpoint": "https://auth.pingone.com/your-env-id/as/token",
          "issuer": "https://auth.pingone.com/your-env-id/as"
        }
      },
      "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`。次のステップでこの値を保存します。

**注記**  
一意のコールバック URL は、ユーザーフェデレーションクライアントにのみ適用されます。PingOne を M2M クライアントとして設定した場合、コールバック URL 登録は必要ありません。

 **ステップ 3: 一意のコールバック URL を PingOne に登録する** 

PingOne 管理者コンソールに戻り、一意のコールバック URL をユーザーフェデレーションアプリケーションのリダイレクト URI リストに追加します。

1. PingOne 管理者コンソールにサインインし、ステップ 1 で作成したアプリケーションを開きます。

1. によって返された`callbackUrl`値をアプリケーションのリダイレクト URI 設定`CreateOauth2CredentialProvider`に追加します。

1. 変更内容を保存します。