# 매시업 마이그레이션

모든 매시업이 동일한 방식으로 구현되는 것은 아닙니다.매시업 마이그레이션 프로세스와 관련된 몇 가지 고려 사항을 설명하는 가이드로 다음 콘텐츠를 고려합니다.매시업 마이그레이션을 시도하기 전에 다음을 완료했는지 확인합니다.

* Qlik Cloud 테넌트를 배포하고 구성했습니다.

* 사용자들은 IdP을(를) 통해 인증할 수 있으며, 필요한 애플리케이션은 적절한 공유 또는 관리 공간으로 마이그레이션되었습니다. 여기서 사용자들은 최소한 보기 권한을 가집니다.공간 권한에 대한 자세한 내용은 [공유 공간의 권한 관리](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Spaces/managing-shared-spaces.htm) 및 [관리되는 공간의 권한 관리](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Spaces/managing-managed-spaces.htm)를 참조하십시오.

* 테넌트 관리자 역할이 있는 테넌트에 대한 액세스(웹 통합 만들기에 필요).

또한 Qlik Sense 매시업이 IFrames만 사용하거나 Qlik 기능 API를 사용하여 개체를 포함하는지 여부에 관계없이 일반적으로 JavaScript 및 HTML을 사용하여 구현되는 방식에 대해 잘 알고 있어야 합니다.

명확히 하기 위해 새 매시업은 Qlik Cloud의 매시업을 참조하고 이전 매시업은 Qlik Sense 클라이언트 관리의 기존 매시업을 참조하십시오.

## 웹 통합

Qlik Cloud의 새 매시업은 Qlik Sense 클라이언트 관리 대신 Qlik Cloud 테넌트의 콘텐츠를 로드하고 포함합니다.매시업 웹사이트(원본)를 식별할 수 있도록 Qlik Cloud에서 웹 통합을 구성해야 합니다.

웹 통합은 포함된 시각화를 렌더링하기 위해 URL 포함 목록과 연결된 유효한 ID를 제공하는 웹 사이트를 허용하는 보안 메커니즘입니다.Qlik Cloud와 상호 작용하는 모든 웹 응용 프로그램은 테넌트에서 웹 통합을 구성해야 합니다.

### Qlik Cloud에서 웹 통합 만들기

웹 통합을 만들려면 Qlik Cloud의 테넌트 관리자여야 합니다.

다음과 같이 하십시오.

1. 관리 활동 센터에서 웹으로 이동합니다.

2. 새로 만들기를 클릭합니다.

3. 웹 통합에 대한 이름을 입력합니다.

4. 원본 주소를 https://domain.com 형식으로 입력합니다.

   * 비표준 포트의 경우 주소에 포트 번호를 포함합니다(예: https://domain.com:8080).

   정보 메모Qlik Cloud는 웹 통합 원본에 대한 와일드카드 도메인을 지원하지 않으므로 명시적 도메인 주소를 지정해야 합니다.

5. 추가를 클릭하여 허용 목록에 원본을 포함합니다.

6. 필요한 경우 원본을 더 추가합니다.

7. 만들기를 클릭하여 프로세스를 완료합니다.

![웹 통합 만들기](https://help.qlik.com/ko-KR/migration/Content/Resources/Images/MigrationCenter/ui_CreateWebIntegration.png)

웹 통합을 만들면 ID가 부여됩니다.새 매시업 코드의 필수 특성 또는 매개 변수인 매시업의 qlik 웹 통합 ID입니다.

웹 통합 ID

웹 통합 ID

웹 통합 ID ![웹 통합 ID의 예](https://help.qlik.com/ko-KR/migration/Content/Resources/Images/MigrationCenter/ui_WebIntegrationID.png)

웹 통합 만들기에 대한 자세한 내용은 [웹 통합 관리](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/mc-adminster-web-integrations.htm)를 참조하십시오.

## 인증

Qlik Sense 클라이언트 관리의 매시업은 일반적으로 인증 메커니즘이 미리 구성된 가상 프록시를 통해 인증을 처리합니다.옵션에는 헤더, 티켓, SAML, JWT, OpenID 연결(OIDC) 및 익명이 포함됩니다.자세한 내용은 [인증 솔루션](https://help.qlik.com/en-US/sense-admin/May2026/Subsystems/DeployAdministerQSE/Content/Sense_DeployAdminister/QSEoW/Deploy_QSEoW/Server-Security-Authentication-Solutions.htm) (영어로만 제공)을 참조하십시오.

Qlik Sense 클라이언트 관리 이전 매시업에서 인증은 일반적으로 필요한 정적 Qlik 파일 및 라이브러리를 포함한 모든 리소스가 이 가상 프록시를 통해 로드되기 전에 코드에서 처리됩니다.

예를 들어,

* 티켓 및 JWT를 사용하면 일반적으로 Qlik 티켓 또는 JWT 토큰을 안전하게 만들기 위해 백엔드 인증 모듈에 대한 호출이 있습니다.

* 헤더를 사용하면 일부 기본 모듈 또는 리버스 프록시가 적절한 헤더를 설정합니다.

* OIDC 및 SAML의 경우 리소스를 로드하고 콘텐츠 포함을 시작할 수 있도록 Qlik Sense로 세션을 최종적으로 시작하기 위해 인증 흐름을 트리거하는 해당 ID 공급자에 대한 초기 리디렉션이 있어야 합니다.

Qlik Cloud는 가상 프록시를 사용하지 않습니다.대신 테넌트에서 만든 웹 통합을 사용합니다.인증을 위해 다음 두 가지 메커니즘을 사용할 수 있습니다.

* 대화형 로그인—이 메커니즘은 테넌트가 일반 액세스에 사용하는 구성된 IdP에 따라 다릅니다.이는 기본적으로 Qlik Account IdP이거나 Okta, Auth0, ADFS, AzureAD, Salesforce, Generic 및 Keycloak과 같은 사용할 수 있는 옵션 중 하나입니다.

* JSON Web Token(JWT)—이 인증 메커니즘은 일반적으로 백엔드 서비스에서 안전하게 생성되는 서명된 JWT 토큰에 따라 다릅니다.이 경우 JWT 유형의 테넌트에 구성된 ID 공급자가 있어야 합니다.

## Qlik 개체가 기능 API와 함께 포함된 매시업

### 대화형 로그인을 사용한 인증

#### HTML 잠재적 코드 업데이트

Qlik Sense 클라이언트 관리 매시업과 마찬가지로 html의 &lt;head&gt; 섹션에 두 개의 Qlik 정적 파일(qlik-styles.css 및 require.js)을 로드해야 합니다.그러나 Qlik Cloud를 사용하면 인증 없이 이러한 파일에 직접 액세스할 수 있습니다.

HTML 잠재적 코드 업데이트

HTML 잠재적 코드 업데이트

HTML 잠재적 코드 업데이트 ![](https://help.qlik.com/ko-KR/migration/Content/Resources/Images/MigrationCenter/ex_MashupsHTMLCodeUpdates.png)

#### JavaScript 잠재적 코드 업데이트

Qlik Sense 클라이언트 관리 매시업이 기능 API를 사용하여 Qlik Sense 클라이언트 관리에 개체를 포함하고 상호 작용하는 경우 다음 코드를 검토합니다. 이 예에서는 기능 API Qlik 라이브러리를 사용하여 여러 시각화를 포함합니다.

JavaScript 잠재적 코드 업데이트

JavaScript 잠재적 코드 업데이트

JavaScript 잠재적 코드 업데이트 ![](https://help.qlik.com/ko-KR/migration/Content/Resources/Images/MigrationCenter/ex_CapabilityAPI.png)

require에 대한 구성 변수 및 baseUrl

새 Qlik Cloud 매시업에서 구성 변수는 테넌트 host 및 webIntegrationId를 반영해야 합니다.또한 가상 프록시가 없기 때문에 prefix는 그냥 /여야 합니다.세션이 공유되지 않고 이 매시업의 컨텍스트에 대해서만 사용되도록 identity 특성을 설정할 수 있습니다.포트는 443이어야 하며 이는 isSecure가 항상 true임을 의미합니다.

` require  ` 구성에는 webIntegrationId가 포함되어야 하며, 에 대한 통신은 항상 포트 443에서 https를 통해 이루어지기 때문에 baseUrlQlik Cloud이 더 간단합니다.

require에 대한 구성 변수 및 baseURL

require에 대한 구성 변수 및 baseURL

require에 대한 구성 변수 및 baseURL ![](https://help.qlik.com/ko-KR/migration/Content/Resources/Images/MigrationCenter/ex_MashupsWebIntegrationID.png)

#### 기능 API 로드

Qlik 기능 API 라이브러리를 require (js/qlik)로 로드하기 전에 사용자가 이미 로그인되어 있는지 확인합니다.예를 들어, 현재 사용자 메타데이터 종료 지점에 대해 REST API 호출을 트리거하여 이 작업을 수행할 수 있습니다.응답 상태가 200이 아닌 경우 코드는 로그인 화면으로 리디렉션되어 URL: returnto(실제 매시업 URL) 및 qlik-web-integration-id라는 두 매개 변수를 삽입해야 합니다.

코드 실행은 다음과 같습니다.

* /api/v1/users/me REST API 종료 지점에 대한 GET 요청으로 사용자가 이미 로그인했는지 확인합니다.

  * 부정적인 경우(응답 상태가 200이 아님) returnTo 및 qlik-web-integration-id 매개 변수를 추가하여 로그인 화면/login으로 리디렉션합니다.

  * 긍정적인 경우(응답 상태가 200임) qlik/js CapabilityAPI 라이브러리를 ` require  `로 로드하고 이 API 집합을 계속 사용합니다.

최종 코드는 다음 예와 같습니다.JavaScript에는 완벽한 코드를 작성하는 고유한 방법이 없으므로 이는 하나의 유효한 코드 옵션일 뿐입니다.

![](https://help.qlik.com/ko-KR/migration/Content/Resources/Images/MigrationCenter/ex_MashupsCapabilityAPIFinalCode.png)

### JSON Web Token(JWT)을 사용한 인증

#### JWT ID 공급자 구성

JWT 토큰은 인증서 비공개 키로 안전하게 서명된 일부 페이로드 사용자 메타데이터(예: 이름, 이메일, 그룹, 제목)의 암호화 결과입니다.연결된 인증서 공개 키가 있는 사람은 누구나 토큰의 유효성을 검사하고 그 안에 있는 사용자 정보를 읽을 수 있습니다.

Qlik Cloud가 서명된 JWT 토큰의 유효성을 검사하려면 JWT 유형의 Qlik Cloud 테넌트에서 ID 공급자를 구성해야 합니다.일단 구성되면 테넌트는 적절하게 서명된 전달자 JWT 토큰이 포함된 API 요청을 수락하고 유효성을 검사할 수 있습니다.

다음과 같이 하십시오.

1. 관리 활동 센터에서 구성 섹션에서 ID 공급자를 선택하여 새 ID 공급자를 만듭니다.

   JWT 유형으로 ID 공급자 구성 만들기

   JWT 유형으로 ID 공급자 구성 만들기

   JWT 유형으로 ID 공급자 구성 만들기 ![](https://help.qlik.com/ko-KR/migration/Content/Resources/Images/MigrationCenter/ui_MashupsCreateJWT.png)

2. 위의 인증서 상자에 인증서 공개 키를 PEM 서식으로 붙여넣습니다.

   이전 매시업이 이미 Qlik Sense 클라이언트 관리 인증에 JWT를 사용하는 경우 사용 중인 인증서 비공개 키 및 공개 키를 이미 알고 있을 수 있습니다.또한 서명된 JWT 토큰을 만들기 위한 백엔드 서비스가 이미 있을 수 있습니다.그렇지 않은 경우 [JWT 권한 부여를 위한 서명된 토큰 만들기](https://qlik.dev/authenticate/jwt/create-signed-tokens-for-jwt-authorization)를 참조하십시오.

3. 선택적으로 발행자 및 키 ID를 지정할 수 있으며 만든 후 이러한 값이 제공됩니다.

   ![ID 공급자 구성의 발급자 및 키 ID](https://help.qlik.com/ko-KR/migration/Content/Resources/Images/MigrationCenter/ui_MashupsIssuerKeyID.png)

#### 서명된 JWT 토큰 백엔드 서비스 잠재적 코드 업데이트

Qlik Sense 클라이언트 관리를 사용하면 JWT 토큰을 생성하기 위한 페이로드에 JWT 인증을 위해 Qlik Sense의 가상 프록시에 필요한 클레임 사용자 ID 및 사용자 디렉터리만 필요합니다.Qlik Cloud를 사용하면 이 페이로드에 더 많고 다양한 클레임 특성이 필요합니다.

Qlik Cloud에 필요한 사항을 반영하기 위해 필요한 서명 옵션과 함께 페이로드에 대한 JWT 토큰 생성 백엔드 서비스 코드를 조정해야 합니다.예를 들어, JWT ID 공급자의 발급자 및 키 ID는 필수 서명 옵션입니다.전체 설명은 [Qlik Sense 권한 부여에 대한 JWT 서식](https://qlik.dev/authenticate/jwt/create-signed-tokens-for-jwt-authorization#the-payload)을 참조하십시오.

#### HTML 잠재적 코드 업데이트

Qlik Sense 클라이언트 관리 매시업과 마찬가지로 html의 &lt;head&gt; 섹션에 두 개의 Qlik 정적 파일(qlik-styles.css 및 require.js)을 로드해야 합니다.그러나 Qlik Cloud를 사용하면 인증 없이 이러한 파일에 직접 액세스할 수 있습니다.

#### JavaScript 잠재적 코드 업데이트

코드 개념은 대화형 로그인을 사용하는 것과 유사합니다.그러나 이 경우 일반 로그인 화면으로 리디렉션하는 대신 /login/jwt-session 종료 지점에 대한 POST 요청으로 JWT 세션을 시작하여 전달자 JWT 토큰 및 웹 통합 ID에 대한 헤더를 전달해야 합니다.

다음과 같이 하십시오.

* /api/v1/users/me REST API 종료 지점에 대한 요청으로 사용자가 이미 로그인했는지 확인합니다.

  * 긍정적인 경우(응답 상태가 200임), require와 함께 qlik/js 기능 API 라이브러리를 로드하고 사용합니다.

  * 부정적인 경우(응답 상태가 200이 아님) POST 요청을 트리거하여 지정된 서명된 JWT 토큰으로 JWT 세션을 시작합니다.

    * 긍정적인 경우, require와 함께 qlik/js 기능 API 라이브러리를 로드하고 사용합니다.

    * 부정적인 경우, JWT가 유효하지 않거나 만료되었거나 수락되지 않았기 때문에 JWT 인증이 실패했을 가능성이 있습니다.

다음은 위에서 설명한 프로세스의 코드 예입니다.

![](https://help.qlik.com/ko-KR/migration/Content/Resources/Images/MigrationCenter/ex_MashupsJavaScriptCodeUpdates.png)

### Qlik Cloud의 기능 API 및 호환성

Capability API는 다양한 API 모음과 상호 작용할 수 있게 해주는 JavaScript 라이브러리입니다. 예를 들어, Root API, Visualization API, 앱 API, Global API, Field API, Table API, Variable API 등이 있습니다.전체 목록은 [기능 API](https://qlik.dev/embed/embed-capability-apis/capability-apis-reference)를 참조하십시오.

웹 응용 프로그램에 기능 API를 사용할 때 Qlik Cloud와 Qlik Sense 클라이언트 관리 사이에 거의 완전한 호환성이 있지만 Qlik Cloud 배포가 있는 웹 사이트에 대해 이 JavaScript 라이브러리를 사용하는 경우 몇 가지 미묘한 차이가 있거나 사용할 수 없는 방법이 있습니다.예를 들어, Qlik Cloud에서는 전역 API를 사용할 수 없습니다.

자세한 내용은 [제품 간 API 비교](https://qlik.dev/apis/api-comparison-chart#capability-apis)를 참조하십시오.

## Qlik 개체가 IFrame과 함께 포함되는 매시업

[Qlik 개체가 기능 API와 함께 포함된 매시업](https://help.qlik.com/ko-KR/migration/Content/Migration/qliksense-saas-migrating-mashups.htm#Mashups)에 설명된 대로 인증을 처리하는 것 외에도 Qlik Cloud가 콘텐츠 보안 정책(CSP)을 처리하는 방법을 알고 있어야 합니다.

### 콘텐츠 보안 정책

CSP의 Qlik Cloud 정책은 다른 도메인에서 Qlik 개체에 대한 액세스를 차단합니다.즉, 단일 API IFrame 접근 방식을 사용하여 Qlik 개체를 포함할 때 frame-ancestors 'self' 정책 오류가 발생합니다.

정책 오류: frame-ancestors 'self'

정책 오류: frame-ancestors 'self'

정책 오류: frame-ancestors 'self' ![](https://help.qlik.com/ko-KR/migration/Content/Resources/Images/MigrationCenter/ex_MashupsFramePolicyError.png)

[개체를 포함하기 위해 IFrame을 사용할 수 있도록](https://qlik.dev/embed/foundational-knowledge/security-requirements/content-security-policy)를 구성하는 방법을 알아보려면 CSP콘텐츠 보안 정책Qlik Cloud을 참조하십시오.

## enigma.js를 사용한 매시업

enigma.js 라이브러리는 Java스크립트 환경에서 Qlik 연관 엔진과 통신할 수 있도록 도와줍니다.

필수 웹 통합 및 사용자 인증 처리와 별도로 Qlik에 enigma.js를 사용할 때 CSRF(교차 사이트 요청 위조) 개념도 고려해야 합니다.

### CSRF(교차 사이트 요청 위조)

Qlik Cloud에는 CSRF(교차 사이트 요청 위조)를 방지하기 위한 대책이 있습니다.Qlik Cloud와 상호 작용하는 모든 웹 솔루션은 WebSocket 연결을 포함하여 모든 비GET REST 호출에 유효한 CSRF 토큰을 제공해야 합니다.

백엔드 또는 프런트엔드 코드에서, 웹 응용 프로그램에서 enigma.js를 사용하면 WebSocket 연결이 만들어집니다.즉, enigma.js 라이브러리가 Qlik Cloud로 보안 세션을 열려면 CRSF 토큰이 WebSocket 연결의 매개 변수로 포함되어야 합니다.

사용자가 로그인하면 유효한 CSRF 토큰을 /api/v1/csrf-token 종료 지점에 요청할 수 있습니다.

enigma.js의 다음 코드 예(로그인한 사용자 포함)는 프런트엔드 코드에서 애플리케이션을 열고 레이아웃을 가져오는 데 사용됩니다.

![](https://help.qlik.com/ko-KR/migration/Content/Resources/Images/MigrationCenter/ex_MashupsEnigmaCode.png)

전체 코드 예를 보려면 다음 자습서를 검토합니다.

[간단한 웹 애플리케이션 자습서 빌드](https://qlik.dev/embed/integrate-web-apps/build-a-simple-web-app).

[enigma.js가 있는 iframe의 시트 처리](https://qlik.dev/embed/embed-quick-starts/handle-sheets-in-iframes-with-enigma)