---
sourceDocument: 호주 판매 고객 관계 관리
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ko-KR/order-management

 Release :

    - australia

ft:locale :

    - ko-KR

ft:publication_title :

    - 호주 판매 고객 관계 관리

ft:clusterId :

    - omgmt

bundleId :

    - omgmt

workflow :

    - Customer and Industry


---

# OAuth 지원으로 외부 연결 사용

# OAuth 지원으로 외부 연결 사용 {#ariaid-title1}

* 릴리스 버전: Australia
* 
* 업데이트 날짜 2026년 03월 12일
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 소요 시간: 5분

외부 연결을 사용하면 보강을 통해 타사 시스템에서 데이터를 검색하여 구성을 개선할 수 있습니다. 보안에 OAuth가 필요한 경우 클라이언트 자격 증명을 사용하여 OAuth 핸드셰이크를 설정하고 외부 API에 액세스할 수 있습니다. 이 접근 방식은 구성 중에 가격 업데이트 또는 속성 채우기와 같은 작업에 대한 안전한 데이터 교환을 보장합니다.

보강은 규칙 엔진 외부에서 실행되며 의 구성에 CPQ영향을 주는 스크립트입니다. 환경에서 사용할 CPQ 수 있는 5가지 유형의 보강이 있습니다.

* 구성/재구성 시
* BOM 응답 시
* 확인
* 선택 목록 확장 가격 책정
* 요청 시

{#using-external-connections-with-oauth-support__ul_wcz_hsm_dhc}

외부 연결은 외부CPQ에서 구성에 대한 CPQ 데이터를 가져옵니다. 외부 연결은 보강에서만 호출할 수 있습니다.

경우에 따라 외부 연결에는 보안을 위해 OAuth 핸드셰이크가 필요합니다. 예를 들어 가격 책정 또는 기타 속성과 같은 외부 공급업체 애플리케이션의 데이터로 필드 또는 보강 스크립트를 채워야 할 수 있습니다.

OAuth 외부 연결을 설정하려면 다음 단계를 수행합니다.

1. 관리자 \> 유틸리티 \> 외부 연결을 방문하여 외부 연결을 정의합니다.

2. 인증 토큰을 정의합니다.
   * 외부 연결이 개방형 API를 호출하는 경우에는 인증 토큰이 필요하지 않습니다.
   * 외부 연결이 Salesforce CPQ 인 경우 인증 토큰을 처리합니다.
   * 인증이 전달자 토큰을 지원하는 경우 인증을 위해 외부 서비스에서 제공하는 전달자 토큰을 삽입합니다.
   * 인증에 OAuth 인증이 필요한 경우:
     1. OAuth 선택 - 클라이언트 자격 증명 플로우
     2. 클라이언트 ID 삽입
     3. 클라이언트 비밀 삽입
     4. 토큰 URL 필드 삽입

     {#using-external-connections-with-oauth-support__ol_h2h_ysm_dhc}

     필요한 OAuth 입력:
     {#using-external-connections-with-oauth-support__table_jhn_jnh_bhc__entry__4}

     | 필드 | 유형 | 설명 | 확인 |
     |-|-|-|-|
     | 클라이언트 ID(필수) | varchar(무제한) | 권한 부여 서버와 함께 생성된 CPQ 클라이언트 ID를 보유합니다. | 비어 있지 않음 |
     | 클라이언트 비밀(필수) | varchar(무제한) | 클라이언트 비밀에 대한 토큰화된 참조를 보유합니다. 실제 값은 값이 직접 저장되는 개발 환경을 제외하고 GCP 비밀 저장소에 저장됩니다 | 비어 있지 않음 |
     | 토큰 URL(필수) | varchar(무제한) | 클라이언트 ID/비밀을 토큰으로 교환할 인증 서버의 URL | 비어 있지 않음 |
     | 범위(선택 사항) | varchar(무제한) | 선택 사항 - 토큰 요청과 함께 전송되는 범위를 지정하는 데 사용할 수 있습니다. | 없음 |
     [표 1. 필수 OAuth 입력]

     {#using-external-connections-with-oauth-support__table_jhn_jnh_bhc}
   {#using-external-connections-with-oauth-support__ul_l4f_vsm_dhc}
3. 경로 입력에서 대상 서버에 전달해야 하는 매개변수를 지정합니다.매개변수 변수를 사용하여 경로를 동적으로 정의할 수 있습니다. 예시 경로는 `/v4/latest/{{inputVariable}}`입니다. 여기서 `{{inputVariable}}` 는 매개변수 변수로 사용되는 경로의 섹션입니다.

   경로에서 매개변수 변수를 사용하는 경우 변수를 정의할 때 보강 스크립트에서 `encodeURIComponent()` 를 사용하십시오. 예를 보려면 다음 코드를 참조하십시오.

       let inputs = {"inputVariable":encodeURIComponent(cfgRequest.baseCurrency.value)};
       let results = External.exchangeRatesAPI(inputs);
       var resultsMap = results.body.rates;

   라인 1은 외부 연결 "inputVariable"에서 매개변수 변수를 참조하여 변수를 정의합니다. CPQ 원하는 데이터를 저장하는 필드가 encodeURIComponent에 래핑되고 inputVariable 경로를 완료합니다.

   그런 다음 라인 2와 3은 정의된 입력을 사용하여 외부 연결 `exchangeRatesAPI` 를 트리거합니다. 원하는 사용 사례인 경우 원하는 데이터를 검색하고 필드를 설정하기 위해 호출 범위를 좁히려면 추가 스크립팅이 필요합니다.

   시간 제한이 필요합니다. 500밀리초를 시작점으로 사용하는 것이 좋습니다. 외부 연결이 정기적으로 이 제한을 초과하는 경우 이 값을 늘릴 수 있습니다. 그러나 최종 사용자 구성의 성능은 느려질 수 있습니다.

   다음 보강 스크립트는 외부 연결을 사용합니다. 이 BOM(자재 명세서) 보강은 고객 데이터로 powerPricing API를 쿼리합니다. 서비스에서 검색된 고객별 요율 날짜를 사용하여 보강은 기존 ProductList 기록의 가격을 조정합니다.

       var powerInputs = {"membershipCode":cfg.eCMembershipCode, "icp":cfg.eCICPNumber}; let powerResponse = External.powerPricing(powerInputs);

       let dailyCharge = 0; let ratesArr = [];

       if(powerResponse.status == 200) {

       for(var record of powerResponse.body) { if(record.chargeType == cfg.expectedUsage) {

       dailyCharge = record.dailyCharges; ratesArr = record.rates;

       }

       }

       for(var prod of ProductList) { if(prod.id=="electricBillEstimator") {

       let addedPrice = dailyCharge * cfg.serviceDurationInDays; prod.price = addedPrice;

       }

       if(prod.id=="Standard Rate" || prod.id=="Low Rate") { prod.price = dailyCharge;

       }

       }

       for(var rateVal of ratesArr) {

       ProductList.id = "Additional Charge Per KWH: " + rateVal.name; ProductList.quantity = 1;
       ductList.bomType="Manufacturing"; ProductList.orderNumber = 2;

       ProductList.price = rateVal.rate; ProductList.notes = rateVal.measure;
       ductList.parentProduct="electricBillEstimator"; ProductList.next();

       }

       }

       return ProductList;

{#using-external-connections-with-oauth-support__ol_grv_nsm_dhc}

