

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

Ping Identity의 PingOne 플랫폼은 아웃바운드 리소스 액세스를 위한 AgentCore 자격 증명 공급자로 구성할 수 있습니다. 이를 통해 에이전트는 PingOne의 OAuth2 서비스를 통해 사용자를 인증하고 PingOne API 리소스에 대한 액세스 토큰을 얻을 수 있습니다.

## 아웃바운드
<a name="identity-idp-pingidentity-outbound"></a>

**참고**  
PingOne OAuth2 애플리케이션은 사용자 페더레이션 또는 M2M OAuth2 클라이언트로만 구성할 수 있으며 둘 다로 구성할 수는 없습니다.

**참고**  
AgentCore 자격 증명은 생성한 각 자격 증명 공급자에 대해 고유한 OAuth2 콜백 URL을 발급합니다. 고유한 콜백 URL을 사용하면 세션 바인딩이 가능하여 권한 부여 응답을 시작한 특정 자격 증명 공급자에 대해서만 사용할 수 있도록 하여 교차 공급자 재생 및 CSRF 스타일 공격으로부터 OAuth2 권한 부여 코드 교환을 보호합니다. URL은 공급자별로 고유하므로를 호출할 때까지 URL을 알 **** 수 없습니다`CreateOauth2CredentialProvider`. 먼저 PingOne OAuth2 애플리케이션을 생성한 다음 AgentCore Identity가 콜백 URL을 발급한 후 PingOne 관리자 콘솔로 돌아가 콜백 URL을 등록합니다.

 **1단계: Ping Identity OAuth2 애플리케이션 생성** 

다음 절차에 따라 PingOne OAuth2 애플리케이션을 설정하고 AgentCore 자격 증명에 필요한 클라이언트 자격 증명을 가져옵니다. 사용자 페더레이션 클라이언트를 구성하는 경우 AgentCore 자격 증명이 고유한 콜백 URL을 발급한 후 3단계에서 리디렉션 URI를 등록합니다.

 **PingOne OAuth2 애플리케이션을 구성하려면** 

1. PingOne 관리자 콘솔에 로그인합니다.

1. 탐색 모음의 **애플리케이션** 아래에서 **애플리케이션을** 선택합니다.

1. 페이지에서 **애플리케이션** 옆의 **\+** 아이콘을 선택하여 새 애플리케이션을 생성합니다.

1. 애플리케이션을 M2M OAuth2 클라이언트로 구성하려면:
   + 권한 부여 유형**으로 클라이언트 자격 증명을** 선택합니다.
   + 토큰 엔드포인트 인증 방법에 대한 **클라이언트 보안 암호 게시물**을 선택합니다.
   + 범위를 포함하여 탭의 애플리케이션 → 리소스에서 사용자 지정 리소스를 생성합니다. 그런 다음 개인 **리소스** 탭 아래의 애플리케이션에 해당 범위를 추가합니다. 그런 다음 GetResourceOauth2AccessToken의 '범위' 필드에 범위가 있는지 확인합니다.

1. 애플리케이션을 사용자 페더레이션 Oauth2 클라이언트로 구성하려면:
   + 응답 유형 **코드를** 선택합니다.
   + 권한 부여 유형에 대한 **권한 부여 코드를** 선택합니다.
   + 토큰 엔드포인트 인증 방법에 대한 **클라이언트 보안 암호 기본**을 선택합니다.
   + 지금은 리디렉션 URI 목록을 비워 둡니다. 3단계에서 고유한 콜백 URL을 추가합니다.

자세한 내용은 [Ping Identity의 PingOne API 설명서를 참조하세요](https://apidocs.pingidentity.com/pingone/getting-started/v1/api).

 **2단계: AgentCore 자격 증명 공급자 생성** 

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 자격 증명과의 토큰 교환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 자격 증명과의 토큰 교환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단계: PingOne에 고유한 콜백 URL 등록** 

PingOne 관리자 콘솔로 돌아가 사용자 페더레이션 애플리케이션의 리디렉션 URI 목록에 고유한 콜백 URL을 추가합니다.

1. PingOne 관리자 콘솔에 로그인하고 1단계에서 생성한 애플리케이션을 엽니다.

1. 에서 반환한 `callbackUrl` 값을 애플리케이션의 `CreateOauth2CredentialProvider` 리디렉션 URI 구성에 추가합니다.

1. 변경 내용을 저장합니다.